1 回答

TA貢獻1848條經驗 獲得超2個贊
這里有2個錯誤:
如果您想重用
zip
對象,請創建一個列表。該物體在使用一次后就會耗盡。你可以這樣修復它:
custom_cv?=?[*zip(train_index_list,?test_index_list)]
交叉驗證列表
cross_val_predict
應該是實際數組的分區(每個樣本應該只屬于一個測試集)。就你而言,事實并非如此。如果您考慮一下,堆疊交叉驗證列表的輸出將產生長度為6 的數組,而原始y的長度為 5。您可以像這樣實現自定義交叉驗證預測:
def custom_cross_val_predict(clf, X, y, cv):
? ? y_pred, y_true = [], []
? ? for tr_idx, vl_idx in cv:
? ? ? ? X_tr, y_tr = X[tr_idx], y[tr_idx]
? ? ? ? X_vl, y_vl = X[vl_idx], y[vl_idx]
? ? ? ? clf.fit(X_tr, y_tr)
? ? ? ? y_true.extend(y_vl)
? ? ? ? y_pred.extend(clf.predict(X_vl))
? ? ? ??
? ? return y_true, y_pred
labels, predicted = custom_cross_val_predict(clf,X,y,cv=custom_cv)
print('Confusion matrix:',confusion_matrix(labels, predicted))
添加回答
舉報