簡體   English   中英

scikit-learn:cross_val_predict 僅適用於分區

[英]scikit-learn: cross_val_predict only works for partitions

我正在努力研究如何在 sklearn 中實現 TimeSeriesSplit。

下面鏈接中的建議答案產生了相同的 ValueError。

sklearn TimeSeriesSplit cross_val_predict 僅適用於分區

這里是我的代碼中的相關位:

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 (most recent call last)
<ipython-input-57-d1393cd05640> in <module>()
----> 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, method)
    407 
    408     if not _check_is_permutation(test_indices, _num_samples(X)):
--> 409         raise ValueError('cross_val_predict only works for partitions')
    410 
    411     inv_test_indices = np.empty(len(test_indices), dtype=int)

ValueError: cross_val_predict only works for partitions

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 的預測。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM