标签:python scikit-learn cross-validation
我正在努力研究如何在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))
cross_val_predict中的/home/jedwards/anaconda3/envs/py36/lib/python3.6/site-packages/sklearn/model_selection/_validation.py(估算器,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仅适用于分区
解决方法:
cross_val_predict不能与TimeSeriesSplit一起使用,因为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的预测.
标签:python,scikit-learn,cross-validation 来源: https://codeday.me/bug/20190622/1265488.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。