scikitlearn:cross-unu-val-predict仅适用于分区

2024-05-18 07:12:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力研究如何在sklearn中实现TimeSeriesSplit。在

下面链接的建议答案会产生相同的ValueError。在

sklearn TimeSeriesSplit cross_val_predict only works for partitions

下面是我的代码中的相关部分:

from sklearn.model_selection import cross_val_predict
from sklearn import svm

features = df[df.columns[0:6]]
target = df['target']

clf = svm.SVC(random_state=0)

pred = cross_val_predict(clf, features, target, cv=TimeSeriesSplit(n_splits=5).split(features))

ValueError回溯(最近一次调用) 在() ---->;1 pred=交叉价值预测(clf、特征、目标、cv=时间序列分段(n_splits=5)。分割(features))

/home/jedwards/anaconda3/envs/py36/lib/python3.6/site-packages/sklearn/model_选择/_验证.py跨价值预测(估计器、X、y、组、cv、n个作业、详细、拟合参数、预调度、方法) 407 408如果不是_check_is_置换(测试_指数,_num_samples(X)): -->;409 raise ValueError('交叉值预测仅适用于分区') 410 411投资测试指数=np.空(len(测试索引),dtype=int)

值错误:交叉值预测仅适用于分区


Tags: fromimporttargetdfmodelvalsklearnpredict
1条回答
网友
1楼 · 发布于 2024-05-18 07:12:59

由于TimeSeriesSplit的第一个分区从来不是测试数据集的一部分,因此cross-Xul-predict无法与TimeSeriesSplit一起工作,这意味着没有对它进行预测。在

例如,当数据集为[1,2,3,4,5]时

  • 折叠1-列车:[1],测试:[2]
  • 折叠2-列车:[1,2],测试:[3]
  • 折叠3-列车:[1,2,3],测试:[4]
  • 折叠4-列车:[1,2,3,4],测试:[5]

在测试集中,没有一个折叠是1

如果您希望预测2-5,您可以手动循环通过CV生成的分割,并自己存储2-5的预测。在

相关问题 更多 >