Scikit learn 如何在简历中使用scikit学习文档中提到的TimeSeriesSplit
尝试使用10倍时间序列分割,但在cross_val_score的文档中,给出了我们需要通过交叉验证生成器或iterable。时间序列分解为列车和测试数据后,我应该如何将其传递给cv 类型错误Scikit learn 如何在简历中使用scikit学习文档中提到的TimeSeriesSplit,scikit-learn,cross-validation,Scikit Learn,Cross Validation,尝试使用10倍时间序列分割,但在cross_val_score的文档中,给出了我们需要通过交叉验证生成器或iterable。时间序列分解为列车和测试数据后,我应该如何将其传递给cv 类型错误 回溯(最近一次呼叫最后一次) 在() --->16 sc=交叉评分(knn、X1、y1、cv=tss,评分=准确度) 1579列车,测试,详细,无, 1580配合参数) ->1581列车,在cv中测试) 1582返回np.数组(分数)[:,0] 1583 TypeError:“TimeSeriesSplit
回溯(最近一次呼叫最后一次) 在() --->16 sc=交叉评分(knn、X1、y1、cv=tss,评分=准确度) 1579列车,测试,详细,无, 1580配合参数) ->1581列车,在cv中测试) 1582返回np.数组(分数)[:,0] 1583
TypeError:“TimeSeriesSplit”对象不可编辑只需将
tss
传递到cv
17 l.append(sc.mean())
18 ~\Anaconda3\lib\site-packages\sklearn\cross_validation.py in cross_val_score(estimator, X, y, scoring, cv, n_jobs, verbose, fit_params, pre_dispatch)
无需调用tss.split()
更新:
上述方法在scikit learn v0.19.1上进行了测试。因此,请确保您拥有最新版本。我也在使用模块
编辑1:
您现在使用的是:
scores = cross_val_score(knn, X_train, y_train, cv=tss , scoring='accuracy')
但在你发布的问题中,你做到了:
tss = TimeSeriesSplit(n_splits=10).split(X_1)
kn = KNeighborsClassifier(n_neighbors=5, algorithm='brute')
sc = cross_val_score(kn, X1, y1, cv=tss, scoring='accuracy')
查看它们之间的差异(split()
不存在)。我在cross\u val\u score()
中使用了这个tss
,而没有您在问题中发布的split()
编辑2:
老兄,你正在使用不推荐的类。
目前您正在执行以下操作:
tss = TimeSeriesSplit(n_splits=10)
这是错误的。您应该得到如下警告:
from sklearn.cross_validation import cross_val_score
弃用警告:此模块在版本0.18中被弃用,取而代之的是
模型_选择模块的所有重构类
和功能被移动。还请注意,新CV的界面
迭代器与此模块的迭代器不同。本模块将在
在0.20中删除
注意这一点,并像下面这样使用model_selection
模块:
from sklearn.cross_validation import cross_val_score
这样您就不会收到我的代码错误。只需将
tss
传递到cv
17 l.append(sc.mean())
18 ~\Anaconda3\lib\site-packages\sklearn\cross_validation.py in cross_val_score(estimator, X, y, scoring, cv, n_jobs, verbose, fit_params, pre_dispatch)
无需调用tss.split()
更新:
上述方法在scikit learn v0.19.1上进行了测试。因此,请确保您拥有最新版本。我也在使用模块
编辑1:
您现在使用的是:
scores = cross_val_score(knn, X_train, y_train, cv=tss , scoring='accuracy')
但在你发布的问题中,你做到了:
tss = TimeSeriesSplit(n_splits=10).split(X_1)
kn = KNeighborsClassifier(n_neighbors=5, algorithm='brute')
sc = cross_val_score(kn, X1, y1, cv=tss, scoring='accuracy')
查看它们之间的差异(split()
不存在)。我在cross\u val\u score()
中使用了这个tss
,而没有您在问题中发布的split()
编辑2:
老兄,你正在使用不推荐的类。
目前您正在执行以下操作:
tss = TimeSeriesSplit(n_splits=10)
这是错误的。您应该得到如下警告:
from sklearn.cross_validation import cross_val_score
弃用警告:此模块在版本0.18中被弃用,取而代之的是
模型_选择模块的所有重构类
和功能被移动。还请注意,新CV的界面
迭代器与此模块的迭代器不同。本模块将在
在0.20中删除
注意这一点,并像下面这样使用model_selection
模块:
from sklearn.cross_validation import cross_val_score
那么我的代码就不会出错。尝试使用10倍时间序列拆分,但在cross_val_score文档中,我们需要通过交叉验证生成器或iterable。在将时间序列分解为列车和测试数据后,我应该如何将其传递给cvI,因为cvI已经更新了答案,请参见Edit2。这就是我要求完整代码的原因。它在删除不推荐的类后工作。尝试使用10倍时间序列拆分,但在cross_val_score的文档中,给出了我们需要通过交叉验证生成器或iterable。在将时间序列分解为列车和测试数据后,我应该如何将其传递给cvI,因为cvI已经更新了答案,请参见Edit2。这就是我要求提供完整代码的原因。它在删除不推荐的类后工作。好的,我将尝试使用它。这将不起作用,因为TimeSeriesSplit不是iterable@DhruvBhardwaj. 我在发布之前已经检查了这个代码,并且按照预期工作。请共享当前错误的更多详细信息。另外,请阅读更新后的答案tss=TimeSeriesSplit(n_splits=10)。split(X_1)kn=KNeighborsClassifier(n_Neights=5,algorithm='brute')sc=cross_val_score(kn,X1,y1,cv=tss,score='Accurance')。我已经安装了您提到的最新版本的scikit learn,我会尝试使用它。这将不起作用,因为TimeSeriesSplit不是iterable@DhruvBhardwaj. 我在发布之前已经检查了这个代码,并且按照预期工作。请共享当前错误的更多详细信息。另外,请阅读更新后的答案tss=TimeSeriesSplit(n_splits=10)。split(X_1)kn=KNeighborsClassifier(n_Neights=5,algorithm='brute')sc=cross_val_score(kn,X1,y1,cv=tss,score='Accurance')。我已经安装了您提到的最新版本的scikit learn