PyCM多类别混淆矩阵分析python库功能使用探究
作者:小寒聊python
今天给大家分享一个神奇的 python 库,PyCM
https://github.com/sepandhaghighi/pycm
PyCM多类混淆矩阵库
PyCM是 Python Confusion Matrix 的缩写,是一个用 Python 编写的多类混淆矩阵库,专门用于多类别混淆矩阵分析。
它提供了一种简单而有效的方式来评估分类器的性能。通过分析混淆矩阵,PyCM 能够提供多种统计指标,帮助用户从不同角度评价分类模型的表现。这些指标包括但不限于准确率、召回率、F1分数、Kappa 统计量等,支持二分类、多分类及多标签分类问题。
特点
PyCM 具有如下特点。
多类支持
PyCM 专门设计用于轻松处理多类混淆矩阵。与其他一些主要关注二元分类的软件包不同,PyCM 使用户能够在涉及多个类的场景中评估模型。
多功能性
PyCM 是一个多功能库,除了基本的混淆矩阵计算之外,还支持广泛的功能。PyCM 具有可视化、比较、参数推荐和多标签等功能,为深入模型评估提供了全面的工具包。
广泛的指标集
PyCM 提供了广泛的指标集来评估模型性能。从准确度、精确度、召回率和 F1 分数等标准指标到标记性和信息性等高级指标,PyCM 提供了模型优缺点的整体视图。这些丰富的指标增强了分析的粒度,使用户能够就模型改进做出明智的决策。
库的安装
可以直接通过 pip 来进行安装。
pip install pycm
混淆矩阵
PyCM 的 ConfusionMatrix 用法涉及通过提供实际向量和预测向量、直接混淆矩阵或从文件加载信息来创建对象。实例化后,你可以访问大量统计指标和可视化。
下面我们来看一个简单的案例,通过提供实际向量和预测向量来实例化 ConfusionMatrix 对象。
from pycm import * y_actu = [2, 0, 2, 2, 0, 1, 1, 2, 2, 0, 1, 2] y_pred = [0, 0, 2, 1, 0, 2, 1, 0, 2, 0, 2, 2] cm = ConfusionMatrix(actual_vector=y_actu, predict_vector=y_pred) cm.classes #[0, 1, 2]
输出混淆矩阵
cm.print_matrix()
cm.print_normalized_matrix()
接着计算统计指标。
cm.stat(summary=True)
绘图
用户可以使用 plot 方法来可视化混淆矩阵。可视化为模型评估和报告结果增加了一层额外的可解释性。
from matplotlib import pyplot as plt cm.plot(cmap=plt.cm.Greens, number_label=True, plot_lib="matplotlib") cm.plot(cmap=plt.cm.Reds, normalized=True, number_label=True, plot_lib="seaborn")
ROC 曲线
在ROC曲线中,Y轴代表真阳性率,X轴代表假阳性率。因此,理想的点位于曲线的左上方,曲线下方的面积越大,代表性能越好。ROC 曲线是二元分类器性能的图形表示。
在 PyCM 中,ROCCurve 基于 “One vs. Rest” 策略对输出进行二值化,为多类分类器提供 ROC 扩展。获取实际标签向量、正类的目标概率估计以及类的有序标签列表,该方法能够计算并绘制不同判别阈值的 TPR-FPR 对,并计算 ROC 曲线下的面积。
crv = ROCCurve(actual_vector=np.array([1, 1, 2, 2]), probs=np.array([[0.1, 0.9], [0.4, 0.6], [0.35, 0.65], [0.8, 0.2]]), classes=[2, 1]) crv.thresholds #[0.1, 0.2, 0.35, 0.4, 0.6, 0.65, 0.8, 0.9] auc_trp = crv.area() auc_trp[1] #0.75
以上就是PyCM多类别混淆矩阵分析python库功能使用探究的详细内容,更多关于python PyCM多类别混淆矩阵的资料请关注脚本之家其它相关文章!