机器学习 - 混淆矩阵



它是衡量分类问题性能最简单的方法,其中输出可以是两种或多种类型的类别。混淆矩阵不过是一个二维表,即“实际”和“预测”,此外,这两个维度都有“真阳性 (TP)”、“真阴性 (TN)”、“假阳性 (FP)”、“假阴性 (FN)”如下所示:

Confusion Matrix

与混淆矩阵相关的术语解释如下:

  • 真阳性 (TP) - 当数据点的实际类别和预测类别都为 1 时。

  • 真阴性 (TN) - 当数据点的实际类别和预测类别都为 0 时。

  • 假阳性 (FP) - 当数据点的实际类别为 0 且预测类别为 1 时。

  • 假阴性 (FN) - 当数据点的实际类别为 1 且预测类别为 0 时。

如何在 Python 中实现混淆矩阵?

要在 Python 中实现混淆矩阵,我们可以使用 scikit-learn 库的 sklearn.metrics 模块中的 confusion_matrix() 函数。以下是如何使用 confusion_matrix() 函数的简单示例:

from sklearn.metrics import confusion_matrix

# Actual values
y_actual = [0, 1, 0, 1, 1, 0, 0, 1, 1, 1]

# Predicted values
y_pred = [0, 1, 0, 1, 0, 1, 0, 0, 1, 1]

# Confusion matrix
cm = confusion_matrix(y_actual, y_pred)
print(cm)

在这个例子中,我们有两个数组:y_actual 包含目标变量的实际值,y_pred 包含目标变量的预测值。然后,我们调用 confusion_matrix() 函数,传入 y_actualy_pred 作为参数。该函数返回一个表示混淆矩阵的二维数组。

上面代码的输出如下所示:

[[3 1]
 [2 4]]

我们还可以使用热图可视化混淆矩阵。以下是我们如何使用 seaborn 库的 heatmap() 函数来实现:

import seaborn as sns

# Plot confusion matrix as heatmap
sns.heatmap(cm, annot=True, cmap='summer')

这将生成一个显示混淆矩阵的热图:

heatmap

在此热图中,x 轴表示预测值,y 轴表示实际值。热图中每个正方形的颜色表示落入每个类别的样本数量。

广告