繁体   English   中英

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

[英]Error in 10-fold cross validation code in Python

我从头开始在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:列表分配索引超出范围。

我该如何纠正? 我对从头开始实施此类问题不是很有经验。

您必须首先填充列表以使用其索引,然后将foldx[i]=X[j:j+143,:]行更改为

 foldx.append(X[j:j+143,:])

foldy

foldy.append(y[foldx[j]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM