当前位置: 首页 > news >正文

Python混淆矩阵用例

📜用例

  1. 📜Python社群纽带关系谱和图神经 | 📜多标签混淆矩阵模型 | 📜二元分类分层混淆矩阵模型 | 📜混淆矩阵评估特征归因

✒️梗概

混淆矩阵是评估分类模型性能的有用工具。 该矩阵通过将预测值与实际值进行比较,可以深入了解模型对数据进行分类的程度。 理解和解释混淆矩阵可能具有挑战性,特别是对于机器学习的初学者来说。 然而,理解每个单元代表的内容至关重要,因为它可以帮助您评估模型的优点和缺点。

我们将使用 Python 中的 Scikit-learn 库深入讨论混淆矩阵。 我们将带您了解混淆矩阵到底是什么、为什么它很重要以及如何有效地解释其结果。 此外,我们将引导您构建一个简单的机器学习模型,作为示例,该模型根据花卉的测量值对花卉种类进行分类。

混淆矩阵是用于评估机器学习算法性能的表格。它显示了算法在每个类别中正确或错误分类的样本数量。混淆矩阵有两个维度:实际维度和预测维度。在二元分类中,只有两个类(正类和负类),它看起来像这样:
Predicted Positive  Predicted Negative  Actual Positive  True Positive (TP)  False Negative (FN)  Actual Negative  False Positive (FP)  True Negative (TN)  \begin{array}{|l|c|l|} \hline & \text { Predicted Positive } & \text { Predicted Negative } \\ \hline \text { Actual Positive } & \text { True Positive (TP) } & \text { False Negative (FN) } \\ \hline \text { Actual Negative } & \text { False Positive (FP) } & \text { True Negative (TN) } \\ \hline \end{array}  Actual Positive  Actual Negative  Predicted Positive  True Positive (TP)  False Positive (FP)  Predicted Negative  False Negative (FN)  True Negative (TN) 
让我们考虑一个二元分类问题,其中有两个类:“正”和“负”。

  • 真正例(TP):这是指模型在实际情况下正确预测实例属于正类。换句话说,TP是指被模型正确预测为正例的正例实例的数量。
  • 真负例(TN):这是指模型在实际情况下正确预测实例属于负类。换句话说,TN是指被模型正确预测为负例的负例数量。
  • 假负例(FP):这是指模型错误地预测某个实例属于正类,而实际上它属于负类。 换句话说,FP指的是被模型错误预测为正例的负例的数量。
  • 假负例(FN):这是指模型错误地预测某个实例属于负类,而实际上它属于正类。 换句话说,FN 指的是被模型错误预测为负例的正例数量。

混淆矩阵是机器学习中评估分类模型性能的常用工具。以下是一些现实世界或业务用例,混淆矩阵可能会有所帮助:

  • 欺诈检测:银行使用机器学习模型来识别欺诈交易。 混淆矩阵通过显示真阳性、真阴性、假阳性和假阴性的数量,帮助银行了解模型的执行情况
  • 医疗诊断:医院使用机器学习模型来诊断患有某种疾病的患者。 混淆矩阵通过显示真阳性、真阴性、假阳性和假阴性的数量,帮助医生了解模型的准确性。
  • 客户流失预测:公司使用机器学习模型来预测哪些客户可能会流失(停止使用他们的服务)。 混淆矩阵通过显示真阳性、真阴性、假阳性和假阴性的数量,帮助公司了解模型的表现如何。
  • 情绪分析:社交媒体平台使用机器学习模型来分析用户评论并确定它们是正面还是负面。 混淆矩阵通过显示真阳性、真阴性、假阳性和假阴性的数量,帮助平台了解模型的准确性。
  • 图像分类:电子商务网站使用机器学习模型自动将产品图像分类为不同类别,例如服装或电子产品。 混淆矩阵通过显示每个类别的真阳性、真阴性、假阳性和假阴性的数量,帮助他们了解图像分类算法的执行情况。

让我们看一个对 Scikit-Learn 的乳腺癌数据集进行二元分类的示例。

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrixdata = load_breast_cancer()X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, random_state=0)model = LogisticRegression()
model.fit(X_train, y_train)y_pred = model.predict(X_test)cm = confusion_matrix(y_test, y_pred)print("Confusion Matrix:")
print(cm)

使用Scikit-Learn中的confusion_matrix只会显示混淆矩阵的Numpy数组,但如果想绘制它,我们可以使用Scikit-Learn中的plot_confusion_matrix函数,如下所示:

from sklearn.metrics import plot_confusion_matrix
plot_confusion_matrix(model, X_test, y_test)

这将使用 Matplotlib 输出混淆矩阵图:

现在让我们探讨一个使用多个类(而不仅仅是 2 个二元类)的混淆矩阵的示例。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix, plot_confusion_matrix
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as pltiris = load_iris()
X = iris.data
y = iris.targetX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)y_pred = clf.predict(X_test)cm = confusion_matrix(y_test, y_pred)
plot_confusion_matrix(clf, X_test, y_test)  

行代表真实类别,列代表预测类别。 对角线元素(从左上到右下)显示每个类别的正确预测数量。 非对角线元素显示错误分类。 例如,在我们的例子中,我们可以看到 0 类的 15 个样本被正确预测,没有错误,但是我们可以看到 1 类有两个错误分类为 2 类。

参阅:亚图跨际

http://www.lryc.cn/news/346827.html

相关文章:

  • 【负载均衡式在线OJ项目day6】源文件路由功能及文件版题库构建
  • 841.钥匙和房间
  • 【OceanBase 系列】—— 什么是冻结和转储
  • 智慧园区能耗管控系统,3D可视化开发都需要哪些技术栈?
  • Spring之推断构造方法源码解析
  • 【计算机网络】计算机网络的定义和分类
  • 天机学堂—学习辅助功能(含场景问答和作业)
  • Stable Diffusion AI绘画
  • linux性能监控之sar
  • react框架对Excel文件进行上传和导出
  • 【前端】-【前端文件操作与文件上传】-【前端接受后端传输文件指南】
  • 【IC前端虚拟项目】验证环境env与base_teat思路与编写
  • 使用Remix部署智能合约到币安链(Remix的操作介绍 币安链合约的部署) 点赞收藏哦
  • 为什么Redis6.0引入了多线程
  • 速盾:高防ip和高防cdn有什么相同点?
  • 设计模式之拦截过滤器模式
  • 【联通支付注册/登录安全分析报告】
  • c++ - 在循环中使用迭代器删除 unordered_set 中的元素
  • 深入了解哈希映射(HashMap)
  • Public Key Retrieval is not allowed
  • iphone进入恢复模式怎么退出?分享2种退出办法!
  • Leetcode 107:二叉树的层次遍历II
  • LNMP一键安装包
  • [机器学习-05] Scikit-Learn机器学习工具包进阶指南:协方差估计和交叉分解功能实战【2024最新】
  • 多线程的情况下 AopContext.currentProxy()切面代理失效问题
  • https://是怎么实现的?
  • Linux无root配置Node,安装nvm
  • 蛋糕店做配送小程序的作用是什么
  • 重写muduo之TcpServer
  • 腾讯云服务器之ssh远程连接登录及转发映射端口实现内网穿透(实现服务器访问本地电脑端口)