为了账号安全,请及时绑定邮箱和手机立即绑定

Python中十折交叉验证代码中的错误

Python中十折交叉验证代码中的错误

翻过高山走不出你 2021-04-06 16:57:47
我从头开始在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]])


查看完整回答
反对 回复 2021-04-27
  • 1 回答
  • 0 关注
  • 366 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号