机器学习之混淆矩阵 confusion_matrix

这篇具有很好参考价值的文章主要介绍了机器学习之混淆矩阵 confusion_matrix。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.这里介绍由 sklearn.metrics.ConfusionMatrixDisplay 所给出的关于混淆矩阵的一个小例子,来进行理解混淆矩阵及如何应用混淆矩阵来对数据进行分析

2.先了解混淆矩阵的一些基本信息,这里规定正类为1,负类为0

TP(True Positives): 预测为1,而真实的也为1 (即正类判断为正类,1判断为1)

TN(True Negatives): 预测为0,真实的也为0   (即负类判断为负类,0判断为0)

FP(False Positives): 预测为1,真实的为0       (即负类判断为正类,将0判断为了1)

FN(False Negatives): 预测为0,真实为1        (即正类判断为负类,将1判断为了0) 

样本总数=25  预测为:0 预测为:1
真实为:0 TN = 12 FP = 1 真实的0总数:13
真实为:1 FN = 2 TP = 10 真实的1总数:12
预测的0总数:14 预测的1总数:11

上方表格中,说明一下FN = 2 ,即表示预测为0的样本总的有14个,但是其中有2个样本咱预测成了0不过其真实的情况是为1,所以得到了FN = 2,即将本来是1的预测成了0(正类预测成了负类)。

为了便于理解,还可以将1理解成患病的情况,0是没病的情况,那么上面FN=2,则可理解成,将本来是患病的2个人预测成了没病,所以自然预测出问题了,他俩本来有病,但计算机预测他俩没病。

这个预测的数据,并非人为的凭空捏造,而是通过相关模型的建立及训练后,传入相关测试数据后,得到的预测数据。

而我们会想如果预测的数据和真实的数据情况一样的情况呢,即假设咱建立的模型很牛掰,预测的很准达到了100%正确,那么TN、FP、FN、TP的取值又该如何呢?即如下表情况:我们规定其真实的0的个数和上表一样还是13个,真实的1的个数仍旧为12,然后预测情况如下:

样本总数=25  预测为:0 预测为:1
真实为:0 13 0 真实的0总数:13
真实为:1 0 12 真实的1总数:12
预测的0总数:13 预测的1总数:12

可以看到预测情况和真实的情况一样,即这种情况毫无疑问,预测准确率达到了100%,当然一般情况下,预测能力可达不到100%正确。

除上述外还需了解召回率(recall score)的相关信息,可从sklearn.metrics.recall_score 中进行了解,即使用TN、FP、FN、TP的相关值来计算的一个分数,进而评估该预测效果

3.接下来了解通过代码及运行结果来进行相关信息的理解及应用

3.1  基于SVC的方式来进行训练及预测

# 混淆矩阵 confusion matrix

import matplotlib.pyplot as plt
import numpy as np

from sklearn.datasets import make_classification
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

from sklearn.metrics._classification import recall_score





X, y = make_classification(random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y,random_state=0)

print("真实的 Y值:",y_test)


# SVC 方式

clf = SVC(random_state=0)


clf.fit(X_train, y_train)


predictions = clf.predict(X_test)


print("预测的 Y值:",predictions)

# SVC
#Y: [1 1 1 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0]
#p: [1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0]
#      x             x                       x     





cm = confusion_matrix(y_test, predictions)

disp = ConfusionMatrixDisplay(confusion_matrix=cm)

r = recall_score(y_test,predictions,average='macro')


print("\n","recall score:" , r)



disp.plot()

plt.show()




控制台输出:recall score = 0.8782051282051282

机器学习之混淆矩阵 confusion_matrix

 混淆矩阵图像:

机器学习之混淆矩阵 confusion_matrix

为了方便理解,不妨将混淆矩阵的各个模块添加上坐标,所以可以看到下图的各个模块坐标,坐标为(0,0)的模块样本数量有12个,(0,1)的有1个,(1,0)的有2个,(1,1)的有10个

机器学习之混淆矩阵 confusion_matrix

首先通过对控制台输出的真实的 Y 值及预测的Y值进行分析,可以看到下图中打上红叉的地方,预测的Y值与真实值并不一样,所以可以看到混淆矩阵图上(1,0)的地方有2个,其代表的意思就是预测为0但实际为1的样本数量有2个,即 FN = 2;

又有(0,1)的模块有1个样本,即 FP = 1,表示为预测为 1但实际上是 0(将负类预测成了正类,0预测成了1);

又有(0,0)的模块为12个,即 TN = 12,表示为预测为0,真实的也为0的有12个样本(负类预测成负类,0预测成了0);

之后有(1,1)的模块为10个,即 TP = 10,表示为预测成1,真实的也为1的有10个样本(正类预测成正类,1预测成了1)。

机器学习之混淆矩阵 confusion_matrix

3.2 基于逻辑回归的方式训练及预测

# 添加如下代码,且将SVC方式注释掉使用逻辑回归方式即可


from sklearn.linear_model import LogisticRegression



# SVC 方式
# clf = SVC(random_state=0)

# 逻辑回归方式
clf = LogisticRegression(random_state=0)

机器学习之混淆矩阵 confusion_matrix

 可以发现recall score 分数较SVC的提高了些

机器学习之混淆矩阵 confusion_matrix

 可以发现对比之前的混淆矩阵,逻辑回归方式,(1,1)即 TP = 11,从TP = 10 提高到了 11,略有上升。

3.3 线性回归的方式训练及预测

# 添加线性回归的库,即调用线性回归的代码

from sklearn.linear_model import LinearRegression


# SVC 方式
# clf = SVC(random_state=0)

# 逻辑回归方式
# clf = LogisticRegression(random_state=0)

# 采用线性回归
clf = LinearRegression()


clf.fit(X_train, y_train)


predictions = clf.predict(X_test)

predictions = predictions.astype(int)   # 将预测数据转为int类型

机器学习之混淆矩阵 confusion_matrix

可以看到线性回归方式进行预测效果有些不太理想,recall score 降低了很多

 机器学习之混淆矩阵 confusion_matrix

 从混淆矩阵来看,预测的效果,在预测为1且实际为1时的情况即TP的值下降了许多,该方式进行预测有点不太理想。

4.以上便为混淆矩阵的一些简单理解,总体来说,混淆矩阵表示相关数据情况,还是比较直观的。文章来源地址https://www.toymoban.com/news/detail-413025.html

到了这里,关于机器学习之混淆矩阵 confusion_matrix的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用Python绘制混淆矩阵Confusion Matrix、自定义样式

    使用Python绘制混淆矩阵,原创,直接使用即可,样式可以自由变换。 混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。具体评价指标有总体精度、制图精度、用户精度等,这些精度指标从不同的侧面反映了图像分类的精度。 直接上原创代

    2024年02月11日
    浏览(47)
  • 机器学习之数据分离与混淆矩阵

    例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容之数据分离与混淆矩阵。 前面我们讲过的实例基本流程都是这样的: 数据载入→数据可视化与预处理→模型创建→全数据用于模型训练→模

    2023年04月17日
    浏览(38)
  • 机器学习 | 混淆矩阵和ROC曲线

    (1)对于二分类 TP(True Positive):将正类预测为正类数,真实为0,预测也为0 FN(False Negative):将正类预测为负类数,真实为0,预测为1 FP(False Positive):将负类预测为正类数, 真实为1,预测为0 TN(True Negative):将负类预测为负类数,真实为1,预测也为1 则混淆矩阵如下: (2)对

    2024年01月21日
    浏览(48)
  • 深度学习之卷积神经网络中常用模型评估指标(混淆矩阵,精确率,召回率,特异度计算方法)——python代码

    深度学习之卷积神经网络中常用模型评估指标(混淆矩阵,精确率,召回率,特异度计算方法): 混淆矩阵,精确率,召回率,特异度作为卷积神经网络的模型性能评价指标,它们的计算和绘制具有非常重要的意义,特别是在写论文的时候,我们往往需要这些指标来证明我们模

    2024年02月06日
    浏览(63)
  • 【机器学习】分类器性能度量——混淆矩阵及sklearn实现

    记录一下混淆矩阵的学习心得,不写下来老是容易搞混.. 机器学习中,考量二分类问题的分类器性能时,可以将样本的实际类别与分类器预测类别,划分为如下 TN, FP, FN, TP 四种结果,组合起来就是大名鼎鼎的 confusion matrix 混淆矩阵。其中: True,False 表示预测结果与实际分类

    2024年02月10日
    浏览(59)
  • 【机器学习】二分类问题中的混淆矩阵、准确率、召回率等 (Python代码实现)

    混淆矩阵(Confusion Matrix):将分类问题按照真实情况与判别情况两个维度进行归类的一个矩阵,如在二分类问题中就是一个2*2的矩阵: TP(True Positive):表示实际为真预测为真 FP(False Positive):表示实际为假预测为真 (误报) TN(True Negative):表示实际为假预测为假 FN(False N

    2024年01月24日
    浏览(48)
  • 机器学习模型优劣评价指标:混淆矩阵,P-R曲线与平均精确度(附代码实现)

    文章参考:Mean Average Precision (mAP) Explained | Paperspace Blog 目录 一. Confusion Metrics混淆矩阵 二. Precision-Recall Curve, Average precision P-R曲线,平均精确度 三. 举例与代码实现 (1)从预测分数到类别标签(From Prediction Score to Class Label) (2)精确度-召回度曲线(Precision-Recall Curve) (3)平均

    2024年02月05日
    浏览(45)
  • 【机器学习笔记15】多分类混淆矩阵、F1-score指标详解与代码实现(含数据)

    参考文章 4.4.2分类模型评判指标(一) - 混淆矩阵(Confusion Matrix)_进击的橘子猫的博客-CSDN博客_混淆矩阵 之前在逻辑回归的文章中简单提到过F1-score,但并没有详细对其进行说明和代码实现。这里补一下。 混淆矩阵 (又称 误差矩阵 )是评判模型结果的指标,属于模型评估的

    2023年04月17日
    浏览(50)
  • 【超详细】机器学习sklearn之分类模型评估 混淆矩阵、ROC曲线、召回率与精度、F1分数

    机器学习之分类模型的评估 学习分类模型评估的方法: 1、混淆矩阵 2、分类结果汇总 3、ROC曲线 4、召回率与精度 5、F1分数 一、评估分类器性能的度量 1、真正(true positive, TP)或f++,对应的是被分类模型正确预测的正样本数。 2、假负(false negative, FN)或f±对应的是被分类模型错

    2023年04月08日
    浏览(93)
  • 【机器学习】全网最全模型评价指标(性能指标、YOLOv5训练结果分析、轻量化指标、混淆矩阵详解)【基础收藏】

    在目标检测任务中,我们常用的评价指标一般有两种,一种是使用Pascal VOC的评价指标,一种是更加严格的COCO评价指标,一般后者会更常用点。 如何判断一个检测结果是否正确。目前最常用的方式就是去计算检测框与真实框的IOU,然后 根据IOU去判别两个框是否匹配 。 常见指

    2024年02月04日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包