机器学习 | 混淆矩阵和ROC曲线

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

混淆矩阵

(1)对于二分类
TP(True Positive):将正类预测为正类数,真实为0,预测也为0
FN(False Negative):将正类预测为负类数,真实为0,预测为1
FP(False Positive):将负类预测为正类数, 真实为1,预测为0
TN(True Negative):将负类预测为负类数,真实为1,预测也为1
则混淆矩阵如下:
混淆矩阵画roc曲线,机器学习系列,机器学习,矩阵,人工智能
(2)对于多分类
多分类不再有正例与反例之分,我们设为类别1,类别2,类别3,混淆矩阵如下:
混淆矩阵画roc曲线,机器学习系列,机器学习,矩阵,人工智能

import numpy as np
import copy
import matplotlib.pyplot as plt
import random


def confusion_matrix(y_true, y_pred, n):
    matrix = np.zeros((n, n))
    if n == 2:  # 二分类
        for i in range(len(y_true)):
            row = int(y_true[i]-1)
            col = int(y_pred[i]-1)
            matrix[row, col] += 1
    else:  # 多分类
        for i in range(len(y_true)):
            row = int(y_true[i])
            col = int(y_pred[i])
            matrix[row, col] += 1
    return matrix

精准率和召回率

(1)对于二分类
精确率Precision=TP/(TP+FP),召回率recall= TP/(TP+FN)
(2)对于多分类
多分类不再拥有正例与反例之分,因此精确率与召回率必须针对具体某一类别,但在计算某一类别的精确率和召回率依旧可以将一个nn的混淆矩阵压缩成二分类的混淆矩阵去求。以上述三分类混淆矩阵为例,求类别1的精确率与召回率。33混淆矩阵转换成如下2*2混淆矩阵:
混淆矩阵画roc曲线,机器学习系列,机器学习,矩阵,人工智能

ROC曲线

(1)对于二分类
生成一个ROC曲线,只需要真正率(TPR)和假正率(FPR)。TPR决定了一个分类器在所有正例样本中能正确区分的正例的性能.而FPR是决定了在所有假例的样本中有多少假正例的判断. ROC曲线中分别将FPR和TPR定义为x和y轴。AUC即ROC曲线下的面积。
(2)对于多分类
对于多分类最大的问题就是没有正例与假例之分,也没有真正率与假正率之说,ROC曲线也需要对应具体的某一类别得出。因此我提出了上述将多分类的混淆矩阵压缩成二分类混淆矩阵的方法,以此来计算真正与假正率。这样和二分类统一起来,方便理解与编代码。

def roc(y_true, y_pred):
    sort_pred = copy.deepcopy(y_pred)
    sort_pred.sort(reverse=True)
    TPR = []
    FPR = []
    for i in range(len(sort_pred)):
        threshold = sort_pred[i]
        label_pred = np.array(copy.deepcopy(y_pred))
        label_true = np.array(copy.deepcopy(y_true))
        label_pred[label_pred > threshold] = 1
        label_pred[label_pred <= threshold] = 0
        label_true[label_true != 1] = 0
        matrix = confusion_matrix(list(label_true), list(label_pred), 2)
        tpr = matrix[0][0]/(matrix[0][0]+matrix[0][1])
        fpr = matrix[1][0]/(matrix[1][0]+matrix[1][1])
        TPR.append(tpr)
        FPR.append(fpr)
    x = np.array(FPR)
    y = np.array(TPR)
    plt.plot(x, y)
    plt.show()

简单测试一下

random.seed(0)
y_pred = [0.5+random.uniform(-0.2, 0.2) for _ in range(100)]
y_true = [random.randint(0, 3) for _ in range(100)]
roc(y_true, y_pred)

混淆矩阵画roc曲线,机器学习系列,机器学习,矩阵,人工智能
完整代码:https://github.com/robin-hlt/Machine-Learning-Confusion-Matrix-and-ROC文章来源地址https://www.toymoban.com/news/detail-812345.html

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

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

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

相关文章

  • 机器学习中的ROC曲线理解和实战

    1、ROC曲线,又可以称之为接受者操作特征曲线(Receiver Operating Characteristic Curve), ROC曲线下的面积,称为AUC(Area Under Cureve),可以衡量评估二分类模型的分类好坏。 2、AUC是1乘以的方格中的一部分,起大小在0-1之间,AUC越大说明模型效果越好, AUC=1,是完美的分类器,该模型至少

    2024年02月08日
    浏览(38)
  • 分类问题的评价指标(Precision、Recall、Accuracy、F1-Score、Micro-F1、Macro-F1)以及混淆矩阵、ROC曲线

    真阳性:预测为正,实际为正。把正样本 成功 预测为正。  TP ——True Positive 假阳性:预测为正,实际为负。把负样本 错误 预测为正。  FP ——False Positive  ——误报 真阴性:预测为负、实际为负。把负样本 成功 预测为负。  TN ——True Negative 假阴性:预测与负、实际

    2024年01月19日
    浏览(36)
  • 大数据机器学习深度解读ROC曲线:技术解析与实战应用

    机器学习和数据科学在解决复杂问题时,经常需要评估模型的性能。其中,ROC(Receiver Operating Characteristic)曲线是一种非常有用的工具,被广泛应用于分类问题中。该工具不仅在医学检测、信号处理中有着悠久的历史,而且在近年来的机器学习应用中也显得尤为关键。 ROC曲线

    2024年02月04日
    浏览(31)
  • 机器学习中常用的概念:ROC曲线和AUC值,到底是什么?

    ROC曲线和AUC值是评价分类监督学习性能的重要量度指标。ROC曲线又被称为“接受者操作特征曲线”“等感受性曲线”,主要用于预测准确率情况。最初ROC曲线运用在军事上,现在广泛应用在各个领域,比如判断某种因素对于某种疾病的诊断是否有诊断价值。曲线上各点反映着

    2024年01月23日
    浏览(35)
  • 机器学习技术:如何使用交叉验证和ROC曲线提高疾病预测的准确性和效率?

    随着机器学习的普及,评估模型的性能越来越重要。交叉验证和ROC曲线是两种常见的评估模型性能的方法。本文将介绍这两种方法的基本原理和应用场景,并结合实际案例和技术实践,讲解如何使用交叉验证和ROC曲线来提高机器学习模型的性能。此外,文章也将提供一些最佳

    2024年02月11日
    浏览(49)
  • 分类模型评估:混淆矩阵、准确率、召回率、ROC

    在二分类问题中,混淆矩阵被用来度量模型的准确率。因为在二分类问题中单一样本的预测结果只有Yes or No,即:真或者假两种结果,所以全体样本经二分类模型处理后,处理结果不外乎四种情况,每种情况都有一个专门称谓,如果用一个2行2列表格描述,得到的就是“混淆

    2024年02月06日
    浏览(37)
  • 机器学习:ROC与AUC(Python)

       

    2024年01月25日
    浏览(33)
  • 绘制ROC曲线及P-R曲线

    ROC曲线(Receiver Operating Characteristic Curve)以假正率(FPR)为X轴、真正率(TPR)为y轴。曲线越靠左上方说明模型性能越好,反之越差。ROC曲线下方的面积叫做AUC(曲线下面积),其值越大模型性能越好。P-R曲线(精确率-召回率曲线)以召回率(Recall)为X轴,精确率(Precision)为y轴,

    2023年04月15日
    浏览(34)
  • Python绘制多分类ROC曲线

    目录 1 数据集介绍 1.1 数据集简介 1.2 数据预处理  2随机森林分类 2.1 数据加载 2.2 参数寻优 2.3 模型训练与评估 3 绘制十分类ROC曲线 第一步,计算每个分类的预测结果概率 第二步,画图数据准备 第三步,绘制十分类ROC曲线 分类数据集为某公司手机上网满意度数据集,数据如

    2024年02月04日
    浏览(39)
  • Python包sklearn画ROC曲线和PR曲线

    关于ROC和PR曲线的介绍请参考: 机器学习:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线 参考: Python下使用sklearn绘制ROC曲线(超详细) Python绘图|Python绘制ROC曲线和PR曲线

    2024年02月12日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包