我正在努力研究如何在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 Traceback(最近一次调用最后一次) in() ----> 1 pred = cross_val_predict(clf,features,target,cv = TimeSeriesSplit(n_splits = 5).split(features))
/home/jedwards/anaconda3/envs/py36/lib/python3.6/site-packages/sklearn/model_selection/_validation.py in cross_val_predict(estimator,X,y,groups,cv,n_jobs,verbose,fit_params, pre_dispatch,方法) 407 408如果不是_check_is_permutation(test_indices,_num_samples(X)): - > 409引发ValueError('cross_val_predict仅适用于分区') 410 411 inv_test_indices = np.empty(len(test_indices),dtype = int)
ValueError:cross_val_predict仅适用于分区
答案 0 :(得分:4)
cross_val_predict无法与TimeSeriesSplit一起使用,因为TimeSeriesSplit的第一个分区永远不是测试数据集的一部分,这意味着没有为它做出预测。
e.g。当您的数据集是[1,2,3,4,5]
时在测试集中没有任何折叠为1
如果你想要预测2-5,你可以手动循环你的简历生成的分割,并自己存储2-5的预测。