获取每个交叉验证折叠的混淆矩阵
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