Scikit learn 如何在简历中使用scikit学习文档中提到的TimeSeriesSplit

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

尝试使用10倍时间序列分割,但在cross_val_score的文档中,给出了我们需要通过交叉验证生成器或iterable。时间序列分解为列车和测试数据后,我应该如何将其传递给cv

类型错误
回溯(最近一次呼叫最后一次) 在()

--->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