首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中10倍交叉验证代码中的错误

Python中10倍交叉验证代码中的错误
EN

Stack Overflow用户
提问于 2018-07-09 18:23:15
回答 1查看 429关注 0票数 1

我用Python从头到尾实现了10倍交叉验证。语言是Python3.6,我是用Spyder (Anaconda)写的。我的输入形状是data=(1440,390),label=(1440,1)。

我的代码:

代码语言:javascript
复制
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()

错误出现在

代码语言:javascript
复制
foldx[i]=X[j:j+143,:]

上面写着

IndexError:超出范围的列表赋值索引。

我该怎么纠正呢?我不是很有经验从零开始解决这些问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-09 18:47:11

您必须首先填充一个列表才能使用它的索引,将foldx[i]=X[j:j+143,:]行更改为

代码语言:javascript
复制
 foldx.append(X[j:j+143,:])

同样适用于foldy

代码语言:javascript
复制
foldy.append(y[foldx[j]])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51251845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档