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))
添加回答
举报