我从头开始在Python中实现10倍交叉验证。语言是Python 3.6,我是在Spyder(Anaconda)中编写的。我的输入形状是data =(1440,390),label =(1440,1)。我的代码:def partitions(X,y): np.random.shuffle(X) foldx=[] foldy=[] j=0 for i in range(0,10): foldx[i]=X[j:j+143,:] foldy[i]=y[foldx[j]] j+=144 return np.array(foldx),np.array(foldy)def cv(X,y,model): trainx,trainy=partitions(X,y) scores=[] for i in range(0,10): xtest=trainx[i] ytest=trainy[xtest] xtrain=trainx[:i]+trainx[i+1:] ytrain=trainy[xtrain] model.fit(xtrain,ytrain) preds=model.predict(xtest) print(accuracy_score(np.ravel(ytest),preds)) scores.append(accuracy_score(np.ravel(ytest),preds)) return scores.mean()错误出现在foldx[i]=X[j:j+143,:]它在哪里说IndexError:列表分配索引超出范围。我该如何纠正?我对从头开始实施此类问题不是很有经验。
1 回答

Cats萌萌
TA贡献1805条经验 获得超9个赞
您必须首先填充列表以使用其索引,然后将foldx[i]=X[j:j+143,:]
行更改为
foldx.append(X[j:j+143,:])
同样的 foldy
foldy.append(y[foldx[j]])
添加回答
举报
0/150
提交
取消