首页 > 编程知识 正文

Python绘制混淆矩阵

时间:2023-11-21 13:46:54 阅读:291487 作者:ZVOR

混淆矩阵是统计学中常用的一种工具,用于评估分类器的性能。Python作为一种简洁、易于学习的编程语言,提供了许多绘制混淆矩阵的工具,可以方便地完成混淆矩阵的可视化操作。本文将从多个方面介绍Python绘制混淆矩阵的方法和技巧。

一、Matplotlib绘制混淆矩阵

Matplotlib是Python中一种常用的数据可视化工具库。通过绘制混淆矩阵图,可以直观地了解分类器的精确度、召回率、准确率、误差率等性能指标。

下面是使用Matplotlib绘制混淆矩阵的Python代码:

import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import confusion_matrix

y_true = [0, 1, 0, 1, 1, 0, 0, 0, 0, 1]
y_pred = [0, 0, 0, 1, 1, 0, 1, 0, 0, 1]
labels = ['Class0', 'Class1']

cm = confusion_matrix(y_true, y_pred)
sns.heatmap(cm, annot=True, cmap='Blues', xticklabels=labels, yticklabels=labels)
plt.ylabel('True label')
plt.xlabel('Predicted label')
plt.show()

这段代码首先定义了真实标签(y_true)、预测标签(y_pred)和标签名(labels)。然后,通过调用confusion_matrix方法计算混淆矩阵,接着使用seaborn中的heatmap方法将混淆矩阵绘制出来。

绘图界面中,横轴表示预测标签,纵轴表示真实标签,每个小方格中的数字代表对应类别的预测正确数目。通过可视化,可以更加形象地了解分类器的性能表现。

二、Scikit-learn绘制混淆矩阵

Scikit-learn是Python中一种常用的机器学习库,在其中用于评估分类器性能的方法中,也提供了绘制混淆矩阵的方法。

下面是使用Scikit-learn绘制混淆矩阵的Python代码:

import matplotlib.pyplot as plt
from sklearn.metrics import plot_confusion_matrix
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

X, y = make_classification(random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
clf = DecisionTreeClassifier(random_state=0).fit(X_train, y_train)

plot_confusion_matrix(clf, X_test, y_test)
plt.show()

这段代码中,首先构造一个分类数据集并分为训练集和测试集。然后在训练集上拟合出一个决策树分类器clf。最后调用plot_confusion_matrix方法绘制混淆矩阵图。

与Matplotlib绘制的混淆矩阵图不同,Scikit-learn中绘制的混淆矩阵图增加了各项性能指标的展示。通过鼠标悬停或者手动调整绘图界面,可以查看不同标签下的精确度、召回率、F1分数等性能指标。

三、PyCM混淆矩阵库

PyCM是Python中一种专门用于绘制、计算混淆矩阵的库。与Scikit-learn和Matplotlib不同,PyCM包含了许多混淆矩阵相关的函数和属性,可以支持更加细致、复杂的混淆矩阵操作。

下面是使用PyCM绘制混淆矩阵的Python代码:

from pycm import ConfusionMatrix

y_true = [0, 1, 0, 1, 1, 0, 0, 0, 0, 1]
y_pred = [0, 0, 0, 1, 1, 0, 1, 0, 0, 1]

cm = ConfusionMatrix(actual_vector=y_true, predict_vector=y_pred)
cm.plot(cmap='Blues')

上述代码先引入了PyCM中的ConfusionMatrix函数,然后以真实标签y_true和预测标签y_pred为参数,计算混淆矩阵。最后通过调用混淆矩阵对象的plot方法绘制出混淆矩阵图。

与Scikit-learn类似,PyCM还支持计算多项性能指标、混淆矩阵比较以及标签重命名等高级操作。如果需要对混淆矩阵进行更加细致、严格的统计分析,PyCM是一个不错的选择。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。