首页 > 其他分享 >【scikit-learn基础】--『分类模型评估』之评估报告

【scikit-learn基础】--『分类模型评估』之评估报告

时间:2024-02-04 09:45:36浏览次数:31  
标签:混淆 分类 -- 模型 scikit 矩阵 data 评估

分类模型评估时,scikit-learn提供了混淆矩阵分类报告是两个非常实用且常用的工具。
它们为我们提供了详细的信息,帮助我们了解模型的优缺点,从而进一步优化模型。

这两个工具之所以单独出来介绍,是因为它们的输出内容特别适合用在模型的评估报告中。

1. 混淆矩阵

混淆矩阵Confusion Matrix)用于直观地展示模型预测结果与实际标签之间的对应关系。
它是一个表格,其表示实际的类别标签,而表示模型预测的类别标签。

通过混淆矩阵,可以清晰地看到模型的哪些预测是正确的,哪些是错误的,以及错误预测的具体分布情况。

1.1. 使用示例

下面用手写数字识别的示例,演示最后如何用混淆矩阵来可视化的评估模型训练结果的。
首先,读取手写数字数据集(这个数据集是scikit-learn中自带的):

import matplotlib.pyplot as plt
from sklearn import datasets

# 加载手写数据集
data = datasets.load_digits()

_, axes = plt.subplots(nrows=2, ncols=4, figsize=(10, 6))
for ax, image, label in zip(np.append(axes[0], axes[1]), data.images, data.target):
    ax.set_axis_off()
    ax.imshow(image, cmap=plt.cm.gray_r, interpolation="nearest")
    ax.set_title("目标值: {}".format(label))

image.png

然后,用支持向量机来训练数据,得到一个分类模型(reg):

from sklearn.svm import SVC

n_samples = len(data.images)
X = data.images.reshape((n_samples, -1))
y = data.target

# 定义
reg = SVC()

# 训练模型
reg.fit(X, y)

最后,用得到的分类模型来预测数据,再用混淆矩阵来分析预测值真实值

from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay

# 用训练好的模型进行预测
y_pred = reg.predict(X)

cm = confusion_matrix(y, y_pred)
g = ConfusionMatrixDisplay(confusion_matrix=cm)
g.plot()

plt.show()

image.png
混淆矩阵中,横轴是预测值,纵轴是真实值。
对角线上预测值与真实值符合的情况,可以看出模型分类效果不错,大部分数据都能正确分类的。

也有极个别分类错误的情况,比如:

  • 8被识别成1的错误有2个
  • 5被识别成9的错误有1个
  • 9被识别成3的错误有1个
  • ... ... 等等

2. 分类报告

分类报告提供了模型在各个类别上的详细性能指标。
通常包括准确率Precision)、召回率Recall)、F1分数F1-Score)等评估指标,这些指标能够帮助我们更全面地了解模型的性能。

2.1. 使用示例

基于上面训练的手写数字识别模型,看看模型的各项指标。

from sklearn.metrics import classification_report

# 这里的y 和 y_pred 是上一节示例中的值
report = classification_report(y, y_pred)
print(report)

image.png
报告中列出了手写数字0~9的识别情况。

3. 总结

总的来说,分类报告混淆矩阵一起使用,能够更全面地评估模型的性能,指导模型的优化和改进。
而且它们生成的评估表格和图形,也能够应用于我们的分析报告中。

标签:混淆,分类,--,模型,scikit,矩阵,data,评估
From: https://www.cnblogs.com/wang_yb/p/18005592

相关文章

  • vscode Data Wrangler 一个强大的处理vscode 数据处理工具
    vscodeDataWrangler一个强大的处理vscode数据处理工具,代码没有开源,但是可以进行不少数据的可视化处理安装使用效果比如我一个parquet数据文件的显示处理说明vscode-data-wrangler并没有开源,技术实现上有python,同时还有dotnetcore,当然还有微软的ml库,是一个很强大的......
  • 界面控件DevExpress ASP.NET Spreadsheet组件 - 轻松集成电子表格功能!(一)
    DevExpressASP.NETSpreadsheet组件允许您轻松地将电子表格功能合并到任意ASP.NET应用程序,它可以加载、转换和保存工作簿到XLS-XLSx二进制文件格式,还可以导出和导入XLSX、CSV和TXT文件。P.S:DevExpressASP.NETWebForms Controls拥有针对Web表单(包括报表)的110+种UI控件,可利......
  • C#控制台在同一行显示进度条
    代码如下usingSystem;usingSystem.Threading;classProgram{staticvoidMain(){Console.Write("Progress:");//循环迭代,模拟进度显示for(inti=0;i<=100;i++){//更新控制台中的进度显示......
  • 【学习笔记】字符串
    1.KMP【模板】KMP朴素的比对是如下的:for(inti=0;i<a.size()-b.size();i++){ for(intj=0;j<b.size();j++){ if(a[i+j]!=b[j])break; if(j==b.size()-1)cout<<i<<''; }}设A串长度\(n\),B串长度\(m\),显然这么做是\(O(nm)\)的。很容易想到一个错误优化:如果失......
  • Problem P06. [算法课分治] 找到 k 个最长重复字符串
    注意是在该子字符串内每个字符的出现次数都不少于k。可以采用分治的方法,函数找一个不符合条件的字符,然后将字符串分成两个子字符串,就这样进行递归运算,每次找到符合条件的子字符串就判断一波长度,然后将最长的长度值存下来。#include<iostream>#include<bits/stdc++.h>#includ......
  • 奔驰加塞事件的启发:交替汇入的入口建议安装监控器 —— 从事后舆论角度出发不如从实际
    新闻:奔驰加塞事件缺失监控曝光疑似车上有人劝说“她后边有俩老人,你跟她嚷什么”这件事就是个没法公论的事情,小白车确实加塞了奔驰,奔驰也确实砸了小白车,而小白车那排之前的车辆也确实被奔驰那排之前的车加了塞,但是也不能说因此小白车加塞奔驰就有理,要我看这件事应该从更高的le......
  • 低代码平台如何实现版本管理?
    前言低代码平台是一种利用可视化界面和拖拽功能来快速开发应用程序的工具,它可以减少手动编码的工作量,提高开发效率和质量。低代码平台通常提供了一系列的预构建模块、组件和服务,让开发者可以根据业务需求和逻辑来组合和配置,而不需要关心底层的技术细节。低代码平台也支持与其他系......
  • 在K8S中,etcd组件功能及其特点是什么?
    在Kubernetes(简称K8s)中,etcd是一个极其重要的组件,它是分布式键值存储系统,用于保存集群的配置数据和状态信息。以下是etcd的主要特点:高可用性:etcd设计为集群模式运行,支持多节点部署,通过Raft一致性算法实现数据复制与故障恢复,即使部分节点出现故障,集群也能继续提供服务。强一致......
  • 在K8S中,etcd适应的场景有哪些?
    在Kubernetes(简称K8s)中,etcd作为核心组件,主要用于以下场景:集群状态存储:etcd是Kubernetes控制平面的核心部分,用于持久化存储整个集群的状态信息。所有关于Pods、Services、ReplicaSets、Deployments、Namespaces等各类资源对象的配置数据和状态变更都会被记录在etcd中。服务发......
  • 阿里面试:设计一个大并发、大数据的系统架构,说说设计思路
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......