机器学习系统的设计

1.混淆矩阵

混淆矩阵作用就是看一看在测试集样本集中:

  1. 真实值是 正例 的样本中,被分类为 正例 的样本数量有多少,这部分样本叫做真正例(TP,True Positive),预测为真,实际为真
  2. 真实值是 正例 的样本中,被分类为 假例 的样本数量有多少,这部分样本叫做伪反例(FN,False Negative),预测为假,实际为真
  3. 真实值是 假例 的样本中,被分类为 正例 的样本数量有多少,这部分样本叫做伪正例(FP,False Positive),预测为真,实际为家
  4. 真实值是 假例 的样本中,被分类为 假例 的样本数量有多少,这部分样本叫做真反例(TN,True Negative),预测为假,实际为假

True Positive :表示样本真实的类别 Positive :表示样本被预测为的类别

例子:

样本集中有 6 个恶性肿瘤样本,4 个良性肿瘤样本,我们假设恶性肿瘤为正例,则:

模型 A: 预测对了 3 个恶性肿瘤样本,4 个良性肿瘤样本

  1. 真正例 TP 为:3
  2. 伪反例 FN 为:3
  3. 伪正例 FP 为:0
  4. 真反例 TN:4

模型 B: 预测对了 6 个恶性肿瘤样本,1个良性肿瘤样本

  1. 真正例 TP 为:6
  2. 伪反例 FN 为:0
  3. 伪正例 FP 为:3
  4. 真反例 TN:1

我们会发现:TP+FN+FP+TN = 总样本数量

2. Precision(精准率)

精准率也叫做查准率,指的是对正例样本的预测准确率。比如:我们把恶性肿瘤当做正例样本,则我们就需要知道模型对恶性肿瘤的预测准确率。

例子:

样本集中有 6 个恶性肿瘤样本,4 个良性肿瘤样本,我们假设恶性肿瘤为正例,则:

模型 A: 预测对了 3 个恶性肿瘤样本,4 个良性肿瘤样本

  1. 真正例 TP 为:3
  2. 伪反例 FN 为:3
  3. 假正例 FP 为:0
  4. 真反例 TN:4
  5. 精准率:3/(3+0) = 100%

模型 B: 预测对了 6 个恶性肿瘤样本,1个良性肿瘤样本

  1. 真正例 TP 为:6
  2. 伪反例 FN 为:0
  3. 假正例 FP 为:3
  4. 真反例 TN:1
  5. 精准率:6/(6+3) = 67%

3. Recall(召回率)¶

召回率也叫做查全率,指的是预测为真正例样本占所有真实正例样本的比重。例如:我们把恶性肿瘤当做正例样本,则我们想知道模型是否能把所有的恶性肿瘤患者都预测出来。

例子:

样本集中有 6 个恶性肿瘤样本,4 个良性肿瘤样本,我们假设恶性肿瘤为正例,则:

模型 A: 预测对了 3 个恶性肿瘤样本,4 个良性肿瘤样本

  1. 真正例 TP 为:3
  2. 伪反例 FN 为:3
  3. 假正例 FP 为:0
  4. 真反例 TN:4
  5. 精准率:3/(3+0) = 100%
  6. 召回率:3/(3+3)=50%

模型 B: 预测对了 6 个恶性肿瘤样本,1个良性肿瘤样本

  1. 真正例 TP 为:6
  2. 伪反例 FN 为:0
  3. 假正例 FP 为:3
  4. 真反例 TN:1
  5. 精准率:6/(6+3) = 67%
  6. 召回率:6/(6+0)= 100%

精准率和召回率总结:对于精准率和召回率我们发现,即使我们拥有非常偏斜的类,对于一个算法模型来说,拥有高查准率和召回率,我们可以说这是一个表现优良的算法。

4. F1-score

查准率(Precision)=TP/(TP+FP) 例,在所有我们预测有恶性肿瘤的病人中,实际上 有恶性肿瘤的病人的百分比,越高越好。

查全率(Recall)=TP/(TP+FN)例,在所有实际上有恶性肿瘤的病人中,成功预测有恶 性肿瘤的病人的百分比,越高越好。

如果我们希望只在非常确信的情况下预测为真(肿瘤为恶性),即我们希望更高的查准 率,我们可以使用比 0.5 更大的阀值,如 0.7,0.9。这样做我们会减少错误预测病人为恶性 肿瘤的情况,同时却会增加未能成功预测肿瘤为恶性的情况。

如果我们希望提高查全率,尽可能地让所有有可能是恶性肿瘤的病人都得到进一步地检查、诊断,我们可以使用比 0.5 更小的阀值,如 0.3。

我们希望有一个帮助我们选择这个阀值的方法。一种方法是计算 F1 值(F1 Score),其 计算公式为:

样本集中有 6 个恶性肿瘤样本,4 个良性肿瘤样本,我们假设恶性肿瘤为正例,则:

模型 A: 预测对了 3 个恶性肿瘤样本,4 个良性肿瘤样本

  1. 真正例 TP 为:3
  2. 伪反例 FN 为:3
  3. 假正例 FP 为:0
  4. 真反例 TN:4
  5. 精准率:3/(3+0) = 100%
  6. 召回率:3/(3+3)=50%
  7. F1-score:(2*3)/(2*3+3+0)=67%

模型 B: 预测对了 6 个恶性肿瘤样本,1个良性肿瘤样本

  1. 真正例 TP 为:6
  2. 伪反例 FN 为:0
  3. 假正例 FP 为:3
  4. 真反例 TN:1
  5. 精准率:6/(6+3) = 67%
  6. 召回率:6/(6+0)= 100%
  7. F1-score:(2*6)/(2*6+0+3)=80%
F1-Score API
from sklearn.metrics import classification_report

效果图

4.机器学习流程

4.1 案例(癌症分类案例截图) 

4.1.1 数据描述

(1)699条样本,共11列数据,第一列用语检索的id,后9列分别是与肿瘤

相关的医学特征,最后一列表示肿瘤类型的数值。

(2)包含16个缺失值,用”?”标出

4.1.2 训练流程
1.获取数据
2.基本数据处理
2.1 缺失值处理
2.2 确定特征值,目标值
2.3 分割数据
3.特征工程(标准化)
4.机器学习(逻辑回归)
5.模型评估

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/1082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NtripShare2024年第一季度主要技术进展

迷迷糊糊又是一个月没有写点什么,近期想清楚NtripShare在2024的要做什么事情,暂且将NtripShare要做的主要事情为搭建由软件与硬件之间的技术桥梁。 在过去的几年时间里NtripShare对硬件方面一直是规避的态度,今年开始要做一点软硬件搭界的技…

mmcv bug记录

图像分类任务要用到mmcv框架,记录遇到的问题 1. Can‘t import build_from_cfg from mmcv. 解决命令:pip install openmim && mim install mmcv-full 2. python分布式训练 解决方案: 租用多张A40卡,执行下述命令&…

跨站攻击CSRF实验

1.low等级 先利用Burp抓包 将get响应的url地址复制,发到网页上(Low等级到这完成) Medium: 再将抓到的包发到Repeater上,对请求中的Referer进行修改,修改成和url一样的地址,修改成功。 在这里修改后发送 然…

团队协作:如何利用 Gitee 实现多人合作项目的版本控制

文章目录 前言一、名词解释1、Git是什么?2、Gitee、GitHub和GitLab 二、操作步骤1.安装Git2.创建Gitee仓库3.用vscode连接仓库4. 克隆远程仓库 总结 前言 在软件开发中,有效地管理代码是至关重要的。Gitee 是一个功能强大的代码托管平台,提供…

使用clickhouse-backup迁移数据

作者:俊达 1 说明 上一篇文章中,我们介绍了clickhouse-backup工具。除了备份恢复,我们也可以使用该工具来迁移数据。 这篇文章中,我们提供一个使用clickhouse-backup做集群迁移的方案。 2 前置条件 1、源端和目标端网络联通&a…

LeetCode刷题实战5:最长回文子串

题目内容 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba"…

k8s 控制器StatefulSet原理解析

🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、k8s概述 2、有状态服务和无状态服务…

von Mises-Fisher Distribution (代码解析)

torch.distribution 中包含了很多概率分布的实现,本文首先通过均匀分布来说明 Distribution 的具体用法, 然后再解释 von Mises-Fisher 分布的实现, 其公式推导见 von Mises-Fisher Distribution. 1. torch.distribution.Distribution 以下是 Uniform 的源码: cl…

C++语言·类和对象(下)

1. 初始化列表 我们回忆上节写的MyQueue类,其中有两个栈类和一个int类型,栈类因为其特殊性,要开空间,所以我们必须手搓Stack类的构造函数。但是正常来说MyQueue自动生成的构造函数会调用自定义类型的默认构造函数,也就…

基于SpringBoot+Vue的体检管理系统 免费获取源码

项目源码获取方式放在文章末尾处 项目技术 数据库:Mysql5.7/8.0 数据表:12张 开发语言:Java(jdk1.8) 开发工具:idea 前端技术:vue html 后端技术:SpringBoot 功能简介 (有文档) 项目获取关键字&…

浏览器渲染流程中的 9 个面试点

记得 08 年以前,打开网页的时候一个页面卡死整个浏览器凉凉。 这是因为当时浏览器是单进程架构,一个页面或者插件卡死,整个浏览器都会崩溃,非常影响用户体验。 经过了一代代工程师的设计,现代浏览器改成了多进程架构&…

异常检测 | SVDD支持向量数据描述异常数据检测(Matlab)

异常检测 | SVDD支持向量数据描述异常数据检测(Matlab) 目录 异常检测 | SVDD支持向量数据描述异常数据检测(Matlab)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 用于一类或二元分类的 SVDD 模型 多种核函数(…

医学临床预测模型发展新趋势-并联式

医学临床预测模型发展新姿势-并联式 现有的预测模型是对单个结局指标进行分类或者回归,得出最终的结论,而辅助医生进行临床决策。众所周知,临床决策过程中,医生通常会考虑多个结局指标来做出最终的决策;临床研究中也通…

网络编程初步

协议: 一组规则 分层模型结构: OSI七层模型:物、数、网、传、会、表、应 TCP/IP 4层模型:网(链路层/网络接口层)、网、传、应 应用层:http、 ftp、 nfs、 ssh、 telneto o .传输层:TCP、UDP 网络层&…

【干货精品分享】Elasticsearch 6.7 Should 子语句的失效

在ES 使用多条件 查询,并且是多个条件只需要满足部分条件的时候,我们通常会使用到ES的should查询 GET /trademark_query_index/_search {"query":{"bool" : {"must":[{"match" : {"origin": {"…

229 基于matlab的网络入侵检测问题

基于matlab的网络入侵检测问题,主要使用有监督的Kohonen神经网络。有监督Kohonen神经网络的网络结构为38-36-5,网络训练结果受权值影响相当大。在算法初期,本文引入杂草算法对Kohonen网络进行权值寻优。文件包括:入侵数据(data.ma…

网站备案期间怎么关闭首页显示无法访问-文章及其它页面正常访问

自从做了开发者之后才发现每个人博主的需求都是不同的,的的确确颠覆了我的观点,无论是页面布局还是SEO相关的设置,可能是因为站点属性不同所以需求不同,慢慢的就会在主题加入一些自定接口来满足不同人的需求,有人需要P…

centos修改启动项加载不同内核

一.背景: 虚拟机中有时需要编译好几个内核版本,make install后系统存在几个内核版本。需要再哪个内核上开发调试就启动特定的内核版本。这就需要修改启动时的内核版本,再物理机或虚拟机启动时可以上下键选择。但有时是docket云环境中或远程时…

RK3568笔记二十二:基于TACO的垃圾检测和识别

若该文为原创文章,转载请注明原文出处。 基于TACO数据集,使用YOLOv8分割模型进行垃圾检测和识别,并在ATK-RK3568上部署运行。 一、环境 1、测试训练环境:AutoDL. 2、平台:rk3568 3、开发板: ATK-RK3568正点原子板子…

Tomcat源码解析——类加载机制

一、类加载器的创建 在之前的Tomcat启动源码中,简单的介绍了Tomcat的四种类加载器,再复习一遍。 类加载器 作用父加载器commonLoader(共同类加载器)加载$CATALINA_HOME/lib下的类加载器应用类加载器catalinaLoader(容器…