获取每个交叉验证折叠的混淆矩阵

Posted

技术标签:

【中文标题】获取每个交叉验证折叠的混淆矩阵【英文标题】:getting the confusion matrix for each cross validation fold 【发布时间】:2018-09-10 06:51:30 【问题描述】:

我正在使用 scikit-learn 通过交叉验证运行逻辑回归管道。我在下面的代码中从每个折叠中获取分数。如何获得混淆矩阵?

clf = make_pipeline(MinMaxScaler(), LogisticRegression())
scores = cross_val_score(clf, X_train, y_train, cv=3)

【问题讨论】:

【参考方案1】:

我想你想要的是:

clf = make_pipeline(MinMaxScaler(), LogisticRegression())

from sklearn.model_selection import cross_val_predict
from sklearn.metrics import confusion_matrix
y_pred = cross_val_predict(clf, X_train, y_train, cv=3)
conf_mat = confusion_matrix(y, y_pred)

来自 scikit-learn 在线文档的3.1.1.2:

函数 cross_val_predict 有一个类似的接口 cross_val_score,但返回,对于输入中的每个元素, 该元素在测试中获得的预测 放。只有交叉验证策略将所有元素分配给 测试集只能使用一次(否则会引发异常)。

请注意,此计算的结果可能与使用 cross_val_score 获得的结果略有不同,因为元素以不同的方式分组。

【讨论】:

感谢@Brian O'Donnell 的回答

以上是关于获取每个交叉验证折叠的混淆矩阵的主要内容,如果未能解决你的问题,请参考以下文章

在 KFold 交叉验证的情况下如何显示平均分类报告和混淆矩阵

10个交叉折叠的混淆矩阵 - 如何做到pandas dataframe df

交叉验证中的准确性和混淆矩阵

应用分层10折交叉验证时如何在python中获取所有混淆矩阵的聚合

sklearn中留一法交叉验证的混淆矩阵

如何使用 LIBSVM 从混淆矩阵中获得分类精度?