来源:数据鸽

本文约1500字,建议阅读5分钟。

本篇我们来看下医学假阴性在机器学习中是如何用来衡量预测结果好坏的。

近日来,新冠肺炎核酸检测“假阴性”引起了关注。所谓的假阴性,就是患者是新型冠状病毒感染者,但是核酸没检测出来,报告阴性。有专家分析,任何核酸检测的检出率都不可能达到100%,出现假阴性具有不可避免性,这是技术本身存在的局限性。

对于熟悉机器学习(Machine Learning)的各位鸽友来说,假阴性(False Negative, FN)是患者本身是染病了,但是由于预测错误,预测结果是无病,或者非感染者。本篇我们来看下假阴性在机器学习中是如何用来衡量预测结果好坏的。

这里的“真或假”其实就是指(医学上)检测正确或错误,(机器学习中)预测正确或错误。

好了,如果有点晕,看下面一张表总结就够了:

TP(真阳性):
本身有病,并且检测/预测正确

FN(假阴性):
本身有病,但是由于检测/预测错误,导致误判为无病

FP(假阳性):
本身无病,但是由于检测/预测错误,导致误判为有病

TN(真阴性):
 本身无病,并且检测/预测正确

那么像这种在机器学习中来判断预测值为阳性(1),阴性(0)的问题是典型的二元分类问题。我们可以用很多机器学习算法来解决。这里仅用朴素贝叶斯举个例子。

朴素贝叶斯是一种利用贝叶斯概率定理对未知类进行预测的分类算法。它使用概率来决定一个测试点属于哪个类。朴素贝叶斯是一个纯粹的统计模型。由于假设数据集中的特征/属性是相互独立的,因此此算法称为朴素算法。

在本文中,我们将使用朴素贝叶斯分类器来预测数据集中的患者是否患有糖尿病。数据集为UCI Pima Indians Diabetes Database (加州大学尔湾分校糖尿病公开数据集),可以在UCI Machine Learning网站或Kaggle网站下载。

下面我们用Python来实操一下。

首先引入相关包:

import numpy as np
import pandas as pd
from sklearn import model_selection
from sklearn import metrics
from sklearn.naive_bayes import GaussianNB

读入数据,显示前五行:

df_input = pd.read_csv("./data/diabetes.csv")
df_input.head()

可以看到该数据集共有九列:怀孕次数,血糖,血压,皮脂厚度,胰岛素,BMI身体质量指数,糖尿病遗传函数,年龄和结果。前八个是特征,最后一个(结果)是标签。结果有两种标签:0(阴性,非糖尿病)和1(阳性,糖尿病)。

看一下数据类型:

df_input.dtypes

显示数据摘要(基本统计信息):

df_input.describe()

我们需要将所有列分为因变量(结果或标签数据)和自变量(八个特征)。X包含自变量,y包含因变量。然后,我们将这些变量分为训练和测试集:

array = df_input.values
X = array[:,0:8] # select all rows and first 7 columns which are the attributes
Y = array[:,8]   # select all rows and the 8th column which is the classification "Yes", "No" for diabeties
test_size = 0.3 # taking 70:30 training and test set
seed = 1  # Random numbmer seeding for reapeatability of the code
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed)

将数据分为训练和测试后,我们将在训练集上生成Naive Bayes模型,并对测试数据集进行预测:

model = GaussianNB()
model.fit(X_train, Y_train)
print(model)
# make predictions
expected = Y_test
predicted = model.predict(X_test)
# summarize the fit of the model
print(metrics.classification_report(expected, predicted))
print(metrics.confusion_matrix(expected, predicted))

生成了一个分类报告,来度量朴素贝叶斯模型预测的效果:

可以看到,这些指标是使用真阳性/TP(人有糖尿病,预测为糖尿病)、真阴性/TN(人没有糖尿病,预测不是糖尿病)、假阳性/FP(人没有糖尿病但预测为糖尿病)和假阴性/FN(人有糖尿病但预测不是糖尿病)来计算的。

准确率:预测对的样本数占样本总数的比例:

Accuracy = (TP+TN)/(TP+TN+FP+FN)

精确率:预测为正的样本中有多少是真正的正样本:

Precision= TP /(TP + FP)

召回率:我们发现了多少阳性病例,即样本中的正例有多少被预测正确了:

Recall= TP /(TP + FN)

F1分数:又称平衡F分数(balanced F Score),它被定义为精确率和召回率的调和平均数。是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的精确率和召回率。它的最大值是1,最小值是0。

F1 score = 2*(Recall*Precision)/(Recall+Precision)

以上,各位保重。

编辑:王菁

校对:林亦霖

医学假阴性?看看在机器学习中如何用来衡量分类模型的效果(附代码)相关推荐

  1. 独家 | 机器学习中的四种分类任务(附代码)

    作者:Jason Brownlee 翻译:陈丹 校对:杨毅远 全文约4400字,建议阅读18分钟 本文为大家介绍了机器学习中常见的四种分类任务.分别是二分类.多类别分类.多标签分类.不平衡分类,并提供 ...

  2. 推荐 :机器学习中的四种分类任务(附代码)

    作者:Jason Brownlee  翻译:陈丹  校对:杨毅远 全文约4400字,建议阅读18分钟 本文为大家介绍了机器学习中常见的四种分类任务.分别是二分类.多类别分类.多标签分类.不平衡分类,并 ...

  3. 机器学习中常见的六种分类算法(附Python源码+数据集)

    今天和大家学习一下机器学习中常见的六种分类算法,如K近邻.决策树.朴素贝叶斯.逻辑回归.支持向量机.随机森林 除了介绍这六种不同分类算法外,还附上对应的Python代码案例,并分析各自的优缺点. 01 ...

  4. 机器学习(五)常用分类模型(K最近邻、朴素贝叶斯、决策树)和分类评价指标

    机器学习(五)常用分类模型(K最近邻.朴素贝叶斯.决策树)和分类评价指标 文章目录 机器学习(五)常用分类模型(K最近邻.朴素贝叶斯.决策树)和分类评价指标 综述 常用分类模型 K最近邻模型 朴素贝叶 ...

  5. python使用sklearn中的make_classification函数生成分类模型(classification)需要的仿真数据、使用pandas查看生成数据的特征数据、目标数据

    python使用sklearn中的make_classification函数生成分类模型(classification)需要的仿真数据.使用pandas查看生成数据的特征数据(features).目标 ...

  6. 对于机器学习中数据拟合度和模型复杂度的一些建议

    Advice for Applying Machine Learning 我这里想做的是,确保大家在设计机器学习系统时,能够明白怎样选择一条最合适.最正确的路径.因此,接下来我们要讨论一些实用的建议和 ...

  7. 机器学习中的特征工程——分类变量的处理

    出品 | CDA数据分析研究院,转载需授权 文章目录 分类变量 概念 判断 类型 少类别分类变量处理方法 独热编码(One-hot encoding) 虚拟编码(Dummy coding) 效应编码( ...

  8. 透彻理解机器学习中极大似然估计MLE的原理(附3D可视化代码)

    文章目录 相关资料 一.什么是概率,什么是似然 二.极大似然估计 Maximum Likelihood Estimation (MLE) 的含义 2.1 机器学习中的极大化似然函数 2.2 极大似然估 ...

  9. 机器学习中的 7 大损失函数实战总结(附Python演练)

    介绍 想象一下-你已经在给定的数据集上训练了机器学习模型,并准备好将它交付给客户.但是,你如何确定该模型能够提供最佳结果?是否有指标或技术可以帮助你快速评估数据集上的模型? 当然是有的,简而言之,机器 ...

最新文章

  1. PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型
  2. java第九章IO流与文件操作
  3. [ASP.NET笔记] 5.验证控件
  4. Go语言学习之3 流程控制、函数
  5. leetcode剑指 Offer 11. 旋转数组的最小数字(二分查找)
  6. asp.net 读取excel文件的一些方法,NPOI方法
  7. python读取文件路径中有中文_转 python 读取中文文件名/中文路径
  8. 自学python书籍怎么选-自学Python可以选择哪些入门书籍?
  9. oracle执行带有nbsp参数,Oracleamp;nbsp;参数文件amp;nbsp;spfileamp;nbsp;a
  10. Mac m1搭建python深度学习环境+pycharm
  11. mysql数据导出insert_mysql 数据导出
  12. 如何用matlab画北极熊,简笔画:如何使用Flash绘制北极熊,值得收藏
  13. 如何使用微信公众平台测试号进行系统开发
  14. 医学影像SCI发表攻略
  15. 男人婚后为何会对婚姻心生倦意?
  16. 【分布式】分布式系统概述
  17. 教你创建qq好友桌面快捷方式
  18. 西瓜书.第五章(神经网络)重点最全整理+课后习题
  19. NIOS 外存 SDRAM(华邦 W9864G6KH)
  20. “挑衅”携程、e龙 芒果网虎口夺食在线旅游

热门文章

  1. python 运算符重载_零基础小白Python入门必看:面向对象之典型魔术方法
  2. 搭建struts2.1.6环境所需要的包(7个)
  3. Azure运维系列10:跨订阅迁移ARM虚拟机
  4. iis6.0解析漏洞
  5. SQL Server 2008 :安装
  6. 乾坤 微前端_微前端架构初探以及我的前端技术盘点
  7. php mysql找不到文件,php – 在MySQL中找不到outfile创建的文件
  8. 在VM虚拟机中 CentOS7安装VMware Tools(超级详解)
  9. anaconda切换python版本及对应环境,太方便
  10. 精度 召回率 F score