机器学习分类

UCI心脏病二分类这个题目主要是通过一系列数据的挖掘来判断病人有没有心脏病。

机器学习分为四个基本问题,分类、回归、聚类、降维

分类和回归是监督学习,需要用到标签,分类需要预测离散的类别,回归是要预测出一个连续的值
聚类和降维是无监督学习,不需要用到标签,聚类是把数据按照自组织的相似行聚类成一簇一簇的,在聚类之前也不知道哪些会聚簇,降维是高维映射到低维

心脏病数据集是分类中的二分类



逻辑回归、SVM、决策树都是传统的分类算法,可以作为上面的黑箱

数据可视化

模型建立

希望构建一个简单的准则,尽可能快的筛选过滤

如何衡量数据的纯,通过信息熵、信息增益、信息增益率、基尼指数等一系列的指标来判断数据纯度

构建出很多的树,然后集成在一起,那么就组成了随机森林,每一颗决策树都是随机采样单独训练而成,不光对数据随机采样,对特征也随机采样,每一颗树都不一样,但是集成在一起,会非常强大

为什么要成为随机森林,把很多基学习集成在一起,可以让很多的弱学习集集成成为一个强学习集,大大提升准确率,每个都是不同,共同做决策要比单个做决策少很多的偏见,可以有效防止过拟合。

这里是可视化出来的过程,落到每一个结点的数据,以及它是否纯
蓝色表示得了心脏病,黄色表示没得心脏病,颜色越深表示落到节点的数据越纯

对于机器学习,并不想让他成为一个黑箱,尽可能有可解释性,因为是医学上使用,还是要有可靠性

左边这个混淆矩阵,测试机共有六十多个数据,做一个比较组成了混淆矩阵,26代表实际健康也被预测为健康的人数,22是真实心脏病同时被预测为心脏病人数,9表示真实健康但是误判为心脏病,4表示真实心脏病但是被误判为健康。这里的数据中,4是最危险,因为没有检测出来

根据这个混淆矩阵,可以生成一系列评估指标
模型预测健康人中真实健康:26除以所在列的和
真健康人中多少被模型预测为健康,衡量模型的特异性:22除以所在行的和

在模型中也可以设置一些阈值,例如,大于0.8被认定为心脏病,通过调整阈值,得到多大范围的结果,每个阈值都可以生成一个混淆矩阵,每个混淆矩阵也都可以生成一个ROC曲线(工作受试者特性曲线),模型越靠近左上角性能越好,也就是ROC曲线面积越大越好

机器学习的可解释性分析


把数据集中某一个特征打乱,预测的结果偏离很大,表明特征重要,反之,模型性能不受影响,则这个特征无用

这个图每一条线代表一个病人,反映出心脏血管个数越多,患病概率越低

这个是年龄的关系,可以明显看出一拨人随着年龄增加风险增加,一拨人是风险降低

这样可以分析出每一个病人受某一个特征影响从小到大的影响程度

还可以画出两两之间关系的图,横轴表示心率,心率越高风险越大,纵轴表示血管个数,个数越多风险越小,这样可以分析出特征之间的耦合性,特征之间的互相影响

还有一个角度可以从SHAP值,这个值可以被认为,某一个病人的某一个特征对他预测为某一个结果的贡献,把每一个特征的贡献加起来,又可以得到一个特征的重要度

也可以画成这种图,对于左边,第二行主要血管的个数,红色表示主要血管多的病人,蓝色表示主要血管比较少的病人。从中轴线,越靠近右患心脏病正向贡献越大,越靠近左患心脏病负向贡献越大

玩转UCI心脏病二分类数据集 领学课笔记相关推荐

  1. 机器学习——人工神经网络之BP算法编程(python二分类数据集:马疝病数据集)

    目录 一.理论知识回顾 1.神经网络模型 2.明确任务以及参数 1)待估参数: 2)超参数: 3)任务 3.神经网络数学模型定义 1)激活函数 ​ 2)各层权重.阈值定义 3)各层输入输出定义 4.优 ...

  2. R语言将多分类数据集转化为二分类数据集,使用条件判断将多分类转化为二分类(transform dataset into a dichotomous factor response dataset)

    R语言将多分类数据集转化为二分类数据集,使用条件判断将多分类转化为二分类(transform dataset into a dichotomous factor response dataset) 目 ...

  3. ML之分类预测之ElasticNet之PLoR:在二分类数据集上调用Glmnet库训练PLoR模型(T2)

    ML之分类预测之ElasticNet之PLoR:在二分类数据集上调用Glmnet库训练PLoR模型(T2) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 for iStep in ...

  4. ML之分类预测之ElasticNet:利用ElasticNet回归对二分类数据集构建二分类器(DIY交叉验证+分类的两种度量PK)

    ML之分类预测之ElasticNet:利用ElasticNet回归对二分类数据集构建二分类器(DIY交叉验证+分类的两种度量PK) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 # ...

  5. Keras之DNN:基于Keras(sigmoid+binary_crossentropy+predict_proba)利用DNN实现分类预测概率——DIY二分类数据集预测新数据点

    #Keras之DNN:基于Keras(sigmoid+binary_crossentropy+predict_proba)利用DNN实现分类预测概率--DIY二分类数据集&预测新数据点 目录 ...

  6. Keras之DNN::基于Keras(sigmoid+binary_crossentropy+predict_classes)利用DNN实现二分类——DIY二分类数据集预测新数据点

    Keras之DNN::基于Keras(sigmoid+binary_crossentropy+predict_classes)利用DNN实现二分类--DIY二分类数据集&预测新数据点 目录 输 ...

  7. 二十一、Hadoop学记笔记————kafka的初识

    这些场景的共同点就是数据由上层框架产生,需要由下层框架计算,其中间层就需要有一个消息队列传输系统 Apache flume系统,用于日志收集 Apache storm系统,用于实时数据处理 Spark ...

  8. NNDL 实验五 前馈神经网络(1)二分类任务

    目录 前言 一.4.1 神经元 4.1.1 净活性值 [思考题]加权相加与仿射变换之间有什么区别和联系? 4.1.2 激活函数 动手实现<神经网络与深度学习>4.1节中提到的其他激活函数: ...

  9. OHEM,Focal loss,GHM loss二分类pytorch代码实现(减轻难易样本不均衡问题)

    https://mp.weixin.qq.com/s/iOAICJege2b0pCVxPkvNiA 综述:解决目标检测中的样本不均衡问题 该综述主要介绍了OHEM,Focal loss,GHM los ...

最新文章

  1. Java中NaN和-0.0f的比较问题
  2. php去除中间空格,php删除字符串中间空格的方法
  3. Nvidia 安装相关文件下载地址
  4. 【复杂系统迁移 .NET Core平台系列】之认证和授权
  5. 谁最终需要Java模块?
  6. BugkuCTF-Crypto题你喜欢下棋吗
  7. UI设计线框图可编辑模板,临摹学习设计要点
  8. java 执行ssis包_在SSIS包中使用CHECKPOINT重新启动包执行
  9. MySQL 开启二进制日志记录
  10. MongoDB最佳实践
  11. 【解决方法】 Flash cs4 安装之后打不开 启动界面总是一闪而过
  12. 如何快速提交网站备案 ICP备案
  13. mysqld.exe 无法找到入口
  14. B站视频下载扩展工具
  15. 如何选择期权品种,是做期货期货还是做期权
  16. Java二维码编码识别
  17. html在一行内横向排列并排同行同时显示两个多个div盒子的方法(CSS浮动清除float-clear/inline)/办法
  18. python生成word目录_Python 文件与目录操作方法总结
  19. [物理学与PDEs]第4章习题1 反应力学方程组形式的化约 - 动量方程与未燃流体质量平衡方程...
  20. 【小白】使用Typora与微云实现数据同步

热门文章

  1. Linux安装eclipse
  2. kafka命令之消费者组
  3. 【专访】新奥“贫穷”贵公子王子峥
  4. 《数据库系统概念》第七章 2.12,2.13答案
  5. 电视软件测试项目怎么做,LED TV液晶电视软件测试用例.doc
  6. TestNG框架学习
  7. TestNG框架的环境搭建
  8. 互联网安全认证的问题、场景及方案
  9. pyhanlp 繁简转换之拼音转换与字符正则化
  10. 【3D打印机】3D打印机的各项校准!让你更了解你的3D打印机