实现Python中10折交叉验证代码的错误

我在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: list assignment index out of range.

如何修正这个问题?我在从头实现这样的问题上经验不多。


回答:

你需要先填充列表才能使用其索引,将foldx[i]=X[j:j+143,:]这一行改为

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

同样,对于foldy也需要这样做

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注