Я пытаюсь объединить TimeSeriesSplit с GridSearchCV, используя scikit-learn 0.18.1.
Соответствующий код выглядит следующим образом:
pipeline = Pipeline([
('MMS', MinMaxScaler()),
('VT', VarianceThreshold(threshold=0.005)),
('SKB',SelectKBest(chi2, k=90)),
('rf', RandomForestClassifier(class_weight='balanced', random_state=1))])
tscv = TimeSeriesSplit(n_splits=n)
gridsearch = GridSearchCV(pipeline, dict, cv=tscv, n_jobs=1, scoring="roc_auc")
gridsearch.fit(X,y)
Форма X и y:
X.shape == (99942, 2867)
y.shape == (99918,)
Для n=2
это прекрасно работает.Однако, когда n=3
, я получаю следующую ошибку:
IndexError: index 1 is out of bounds for axis 1 with size 1
Соответствующей частью трассировки стека является этот фрагмент кода из sklearn/metrics/scorer.py
:
y_type = type_of_target(y)
y_pred = clf.predict_proba(X)
if y_type == "binary":
y_pred = y_pred[:, 1]
Что такоепроисходит и как я могу это исправить?