Python手动输入混淆矩阵,并计算混淆矩阵的准确率、精确率、召回率、特异度、F1-score

这篇具有很好参考价值的文章主要介绍了Python手动输入混淆矩阵,并计算混淆矩阵的准确率、精确率、召回率、特异度、F1-score。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

import os
import json
import numpy as np
import matplotlib.pyplot as plt
from prettytable import PrettyTable

class ConfusionMatrix(object):
    def __init__(self, num_classes: int, labels: list):
        # 手动输入混淆矩阵,以5×5的矩阵为例。
        self.matrix = np.array([[592, 0, 0, 0, 0],
                                [0, 592, 1, 0, 0],
                                [0, 2, 598, 0, 1],
                                [0, 1, 0, 599, 0],
                                [0, 0, 1, 1, 594]])
        self.num_classes = num_classes
        self.labels = labels

    def update(self, preds, labels):
        for p, t in zip(preds, labels):
            self.matrix[p, t] += 1

    def summary(self):
        # calculate accuracy
        sum_TP = 0
        for i in range(self.num_classes):
            sum_TP += self.matrix[i, i]
        acc = sum_TP / np.sum(self.matrix)
        print("模型准确率为:", acc)

        # calculate precision, recall, specificity, F1-socre
        table = PrettyTable()
        table.field_names = ["", "Precision", "Recall", "Specificity","F1-score"]
        for i in range(self.num_classes):
            TP = self.matrix[i, i]
            FP = np.sum(self.matrix[i, :]) - TP
            FN = np.sum(self.matrix[:, i]) - TP
            TN = np.sum(self.matrix) - TP - FP - FN

            Precision = round(TP / (TP + FP), 3) if TP + FP != 0 else 0.
            Recall = round(TP / (TP + FN), 3) if TP + FN != 0 else 0.
            Specificity = round(TN / (TN + FP), 3) if TN + FP != 0 else 0.
            F1_score = round(2 * Precision * Recall / (Recall + Precision),3) if Recall + Precision != 0 else 0.

            table.add_row([self.labels[i], Precision, Recall, Specificity, F1_score])
        print(table)

    def plot(self):
        matrix = self.matrix
        print(matrix)
        plt.imshow(matrix, cmap=plt.cm.Blues)  # 设置混淆矩阵的颜色

        # 设置x轴坐标label
        plt.xticks(range(self.num_classes), self.labels, rotation=45)
        # 设置y轴坐标label
        plt.yticks(range(self.num_classes), self.labels)
        # 显示colorbar
        plt.colorbar()
        plt.xlabel('True Labels')
        plt.ylabel('Predicted Labels')
        plt.title('Confusion matrix')

        # 在图中标注数量/概率信息
        thresh = matrix.max() / 2
        for x in range(self.num_classes):
            for y in range(self.num_classes):
                # 注意这里的matrix[y, x]不是matrix[x, y]
                info = int(matrix[y, x])
                plt.text(x, y, info,
                         verticalalignment='center',
                         horizontalalignment='center',
                         color="white" if info > thresh else "black")
        plt.tight_layout()
        plt.show()


if __name__ == '__main__':
    # read class_indict
    # class_indices.json 文件中存放的是分类的类别, ./class_indices.json 表示当前目录下的class_indices.json文件
    json_label_path = './class_indices.json'
    assert os.path.exists(json_label_path), "cannot find {} file".format(json_label_path)
    json_file = open(json_label_path, 'r')
    class_indict = json.load(json_file)

    labels = [label for _, label in class_indict.items()]

    # num_classes为分类的类别
    confusion = ConfusionMatrix(num_classes=5, labels=labels)

    confusion.plot()
    confusion.summary()

其中json格式的文件如下:

{
    "0": "13",
    "1": "18",
    "2": "23",
    "3": "28",
    "4": "33"
}

可以按照以上格式(以5分类为例),先写在记事本上再更改后缀名

*注意最后一个后面没有 “,” 

没有扩展名的看下面这个图给它调出来↓

Python手动输入混淆矩阵,并计算混淆矩阵的准确率、精确率、召回率、特异度、F1-score,python,矩阵,numpy

代码部分参考如下:

 参考文献:使用pytorch和tensorflow计算分类模型的混淆矩阵_哔哩哔哩_bilibili文章来源地址https://www.toymoban.com/news/detail-546941.html

到了这里,关于Python手动输入混淆矩阵,并计算混淆矩阵的准确率、精确率、召回率、特异度、F1-score的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 语义分割准确率计算

    目录 pytorch版 pytorch准确率,miou: sklearn版

    2024年02月06日
    浏览(53)
  • 目标框检测中准确率、召回率、AP、mAP计算原理及代码

    1、 TP、FP、TN、FN 概念 在对数据进行预测的时候,往往有以下几个概念: TP 、FP、TN、FN。 什么意思呢?即预测情况(Positive or Negtive)是否真正反应真实情况的关系: 看下面这解析你就懂了! TP:True Positive, 预测的是正样本,且正确预测 。 FP:False Positive, 预测的是正样本

    2024年02月05日
    浏览(39)
  • Python批量识别图片文字(数字识别模式)大幅度提高数字识别准确率

    目录   一、使用beautiful soup库爬取网页图片 二、使用pytesseract库识别图片中数据,并将数据存入txt文件 三、用pandas库实现txt文件到csv文件的转换   一、使用beautiful soup库爬取网页图片  该网站中有需要的数据,但是是以图片形式存在。 这样就给我们爬取数据造成了一些困扰

    2024年02月13日
    浏览(40)
  • python 识别图片验证码/滑块验证码准确率极高的 ddddocr 库

    验证码的种类有很多,它是常用的一种反爬手段,包括:图片验证码,滑块验证码,等一些常见的验证码场景。 识别验证码的python 库有很多,用起来也并不简单,这里推荐一个简单实用的识别验证码的库 ddddocr (带带弟弟ocr)库. python 版本要求小于等于python3.9 版本 pip 安装 下

    2023年04月08日
    浏览(38)
  • python 识别图片验证码/滑块验证码准确率极高的 ddddorc 库

    前言 验证码的种类有很多,它是常用的一种反爬手段,包括:图片验证码,滑块验证码,等一些常见的验证码场景。识别验证码的python 库有很多,用起来也并不简单,这里推荐一个简单实用的识别验证码的库 ddddocr (带带弟弟ocr)库. 环境准备 python 版本要求小于等于python3.9 版

    2024年02月03日
    浏览(40)
  • 音乐流派分类:探索利用Matlab,Django,JavaScript和Python实现85%准确率的机器学习方法

    音乐,这种涵盖了历史,文化,艺术和心理学的丰富多彩的媒体形式,一直以来都是人类社会生活的重要组成部分。通过时间的推移,音乐的风格和形式不断演变,形成了我们今天所熟知的各种音乐流派。音乐流派的分类,一直以来都是个颇具争议的主题,其主观性和模糊性

    2024年02月09日
    浏览(77)
  • 基于深度学习FasterRCNN模型Restnet50 的生活垃圾智能分类(准确率达84%)-含python工程全源码

    本项目基于Faster R-CNN模型,通过RPN网络(Region Proposal Network)获取图片中的候选区域,并利用RestNet50模型提取特征,旨在实现对生活垃圾的智能分拣。 在该项目中,我们使用Faster R-CNN模型,它是一种经典的目标检测算法,能够同时进行物体检测和区域提议。通过RPN网络,我们

    2024年02月09日
    浏览(51)
  • 深度学习提高模型准确率方法

    我们已经收集好了一个数据集,建立了一个神经网络,并训练了模型,在测试和验证阶段最后得到的准确率不高不到90%。或者没有达到业务的期望(需要100%)。 下面列举一些提高模型性能指标的策略或技巧,来提高模型的准确率。 使用更多数据 最简单的方法就是增加数据集

    2024年02月03日
    浏览(50)
  • 【Python小脚本】1分钟100完成100题,某脚本python根据题库选择答案,准确率100%,真的牛了(超级赞)源码可分享,亲测好用~

    对于新手而言,掌握好方向盘的打法非常重要,关系到我们能否顺利通过驾考,拿到驾照。而 开车时方向盘又是最重要的,握好方向盘等于是给自己的安全上了保险。  粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。 科目一考试为上机考试,100道题,题型为判

    2024年02月04日
    浏览(100)
  • 语音识别的挑战:如何提高准确率

    语音识别,也被称为语音转文本(Speech-to-Text),是一种将语音信号转换为文本信息的技术。随着人工智能和大数据技术的发展,语音识别技术在各个领域得到了广泛应用,如智能家居、智能汽车、语音助手、语音搜索等。然而,语音识别技术仍然面临着许多挑战,其中最大

    2024年02月02日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包