混淆矩阵:为模型评估创建混淆矩阵
生成混淆矩阵的函数。
> `from mlxtend.evaluate import confusion_matrix`
> `from mlxtend.plotting import plot_confusion_matrix`
概述
混淆矩阵
混淆矩阵(或 错误矩阵)是一种总结分类器在二分类任务中性能的方法。这个方阵由列和行组成,列出实例的数量,表示“实际类别”与“预测类别”的绝对或相对比例。
设 $P$ 为类 1 的标签,$N$ 为第二类的标签或在多类环境中表示“非类 1”的所有类的标签。
参考文献
- -
示例 1 - 二分类
from mlxtend.evaluate import confusion_matrix
y_target = [0, 0, 1, 0, 0, 1, 1, 1]
y_predicted = [1, 0, 1, 0, 0, 0, 0, 1]
cm = confusion_matrix(y_target=y_target,
y_predicted=y_predicted)
cm
array([[3, 1],
[2, 2]])
要使用matplotlib可视化混淆矩阵,请参阅实用函数 mlxtend.plotting.plot_confusion_matrix
:
import matplotlib.pyplot as plt
from mlxtend.plotting import plot_confusion_matrix
fig, ax = plot_confusion_matrix(conf_mat=cm)
plt.show()
示例 2 - 多类别分类
from mlxtend.evaluate import confusion_matrix
y_target = [1, 1, 1, 0, 0, 2, 0, 3]
y_predicted = [1, 0, 1, 0, 0, 2, 1, 3]
cm = confusion_matrix(y_target=y_target,
y_predicted=y_predicted,
binary=False)
cm
array([[2, 1, 0, 0],
[1, 2, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]])
要使用matplotlib可视化混淆矩阵,请参见工具函数 mlxtend.plotting.plot_confusion_matrix
:
import matplotlib.pyplot as plt
from mlxtend.evaluate import confusion_matrix
fig, ax = plot_confusion_matrix(conf_mat=cm)
plt.show()
示例 3 - 多类到二类
通过设置 binary=True
,所有不是正类标签的类标签都将被汇总为类0。正类标签变为类1。
import matplotlib.pyplot as plt
from mlxtend.evaluate import confusion_matrix
y_target = [1, 1, 1, 0, 0, 2, 0, 3]
y_predicted = [1, 0, 1, 0, 0, 2, 1, 3]
cm = confusion_matrix(y_target=y_target,
y_predicted=y_predicted,
binary=True,
positive_label=1)
cm
array([[4, 1],
[1, 2]])
要使用matplotlib可视化混淆矩阵,请参见实用函数 mlxtend.plotting.plot_confusion_matrix
:
from mlxtend.plotting import plot_confusion_matrix
fig, ax = plot_confusion_matrix(conf_mat=cm)
plt.show()
API
confusion_matrix(y_target, y_predicted, binary=False, positive_label=1)
Compute a confusion matrix/contingency table.
Parameters
-
y_target
: array-like, shape=[n_samples]True class labels.
-
y_predicted
: array-like, shape=[n_samples]Predicted class labels.
-
binary
: bool (default: False)Maps a multi-class problem onto a binary confusion matrix, where the positive class is 1 and all other classes are 0.
-
positive_label
: int (default: 1)Class label of the positive class.
Returns
mat
: array-like, shape=[n_classes, n_classes]
Examples
For usage examples, please see https://rasbt.github.io/mlxtend/user_guide/evaluate/confusion_matrix/