【项目实战】Python实现深度神经网络RNN-LSTM分类模型(医学疾病诊断)
说明:这是一个机器学习实战项目(附带数据+代码+视频+文档),如需数据+完整代码可以直接到文章最后获取。
1.项目背景
随着互联网+的不断深入,我们已步入人工智能时代,机器学习作为人工智能的一个分支越来越多地被应用于各行各业,其中在临床医学检测中也得到了越来越多的应用。基于临床医学越来越多的检测数据,通过建立一个机器学习模型来进行更加智能地预测已成为当今时代的使命。本模型也是基于一些历史的疾病数据进行建模、预测。
2.收集数据
本数据是模拟数据,分为两部分数据:
训练数据集:data.csv
测试数据集:test.csv
在实际应用中,根据自己的数据进行替换即可。
特征数据:age、gender、body_mass_index、heart_failure hypertension、 chronic_obstructic_pulmonary_disease、 chronic_liver_disease、……renal_toxic_drug
标签数据:acute_kidney_disease
3.数据预处理
1)原始数据描述:
2)数据完整性、数据类型查看:
3)数据缺失值个数:
可以看到数据不存在缺失值。
4.探索性数据分析
1)显示age特征的分布情况:
2)显示gender特征的分布情况:
3)显示heart_failure特征的分布情况:
剩下的其它特征,可以自行分析。
4)相关性分析
说明:正值是正相关、负值时负相关,值越大变量之间的相关性越强。
5.特征工程
1)特征数据和标签数据拆分,acute_kidney_disease为标签数据,除acute_kidney_disease之外的为特征数据;
2)数据集拆分,分为训练集和尝试集
数据集已提前分好,直接读取即可。
6.LSTM建模
1)神经网路LSTM简单介绍:
LSTM网络是RNN的一个变体,也是目前更加通用的循环神经网络结构,全程为Long Short-Term Memory,翻译成中文叫作”长 ‘短记忆’”网络。读的时候,”长”后面要稍作停顿,不要读成”长短”记忆网络,因为那样的话,就不知道记忆到底是长还是短。本质上,它还是短记忆网络,只是用某种方法把”短记忆”尽可能延长了一些。
简而言之,LSTM就是携带一条记忆轨道的循环神经网络,是专门针对梯度消失问题所做的改进。它增加的记忆轨道是一种携带信息跨越多个时间步的方法。可以先想象有一条平行于时间序列处理过程的传送带,序列中的信息可以在任意位置”跳”上传送带,然后被传送到更晚的时间步,并在需要时原封不动地”跳”过去,接受处理。这就是LSTM原理:就像大脑中的记忆存储器,保存信息以便后面使用,我们回忆过去,较早期的信息就又浮现在脑海中,不会随着时间的流逝而消失得无影无踪。
这个思路和残差连接非常相似,其区别在于,残差连接解决的是层与层之间得梯度消失问题,而LSTM解决的是循环层与神经元层内循环处理过程中的消息消失问题。
简单来说,C轨道将携带着跨越时间步的信息。它在不同的时间步的值为Ct,这些信息将与输入连接和循环连接进行运算(即与权重矩阵进行点积,然后加上一个偏置,以及加一个激活过程),从而影响传递到下一个时间步的状态如右图所示。
LSTM-增加了一条记忆轨道,携带序列中较早的信息
2)建立LSTM分类模型,模型参数如下:
编号
参数
1
loss='binary_crossentropy'
2
optimizer='adam'
3
metrics=['acc']
其它参数根据具体数据,具体设置。
3)神经网络结构及概要
神经网络结构图:
神经网络概要:
可以看到每层网络的类型、形状和参数。
7.模型评估
1)评估指标主要采用查准率、查全率、F1
编号
评估指标名称
评估指标值
1
查准率
98.74%
2
查全率
100.00%
3
F1
99.37%
通过上述表格可以看出,此模型效果良好。
2)损失和准确率图
loss = history.history['loss']val_loss = history.history['val_loss']epochs = range(1, len(loss) + 1)plt.figure(figsize=(12, 4))plt.subplot(1, 2, 1)plt.plot(epochs, loss, 'r', label='Training loss')plt.plot(epochs, val_loss, 'b', label='Test loss')plt.title('Training and Test loss')plt.xlabel('Epochs')plt.ylabel('Loss')plt.legend()acc = history.history['acc']val_acc = history.history['val_acc']plt.subplot(1, 2, 2)plt.plot(epochs, acc, 'r', label='Training acc')plt.plot(epochs, val_acc, 'b', label='Test acc')plt.title('Training and Test accuracy')plt.xlabel('Epochs')plt.ylabel('Accuracy')plt.legend()
3)ROC曲线绘制
训练集ROC曲线图:
fpr, tpr, threshold = roc_curve(y_data, y_score)roc_auc = auc(fpr, tpr)plt.figure()lw = 2plt.plot(fpr, tpr, color='darkorange',lw=lw, label='ROC curve (area = %0.2f)' % roc_auc)plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')plt.xlim([0.0, 1.0])plt.ylim([0.0, 1.05])plt.xlabel('False Positive Rate')plt.ylabel('True Positive Rate')plt.title(title + ' RNN-LSTM Model ')plt.legend(loc="lower right")
测试集ROC曲线图:
8.临床应用
根据测试集的特征数据,来预测这些患者是否会有相关疾病;根据预测结果:针对将来可能会患有此种疾病的人员,提前进行预防。
预测结果如下:
features = ['age'] fig = plt.subplots(figsize=(15, 15)) for i, j in enumerate(features):plt.subplots_adjust(hspace=1.0)sns.countplot(x=j, data=data_train)plt.title("No. of age")# 本次机器学习项目实战所需的资料,项目资源如下:# 链接:https://pan.baidu.com/s/1dW3S1a6KGdUHK90W-lmA4w # 提取码:bcbpfig = plt.subplots(figsize=(15, 15)) for i, j in enumerate(features):plt.subplots_adjust(hspace=1.0)sns.countplot(x=j, data=data_train)plt.title("No. of gender")
【项目实战】Python实现深度神经网络RNN-LSTM分类模型(医学疾病诊断)相关推荐
- Python基于深度学习多标签分类模型实现云状识别
其实这个比赛早在19年的时候就结束,比赛名为<Understanding Clouds from Satellite Images>,原来的任务其实不仅要识别出来类型还要能够分割出来具体的 ...
- Python实现PSO粒子群优化循环神经网络LSTM分类模型项目实战
说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 PSO是粒子群优化算法(Particle Swarm Optim ...
- TensorFlow练手项目二:基于循环神经网络(RNN)的古诗生成器
基于循环神经网络(RNN)的古诗生成器 2019.01.02更新: 代码比较老了,当时的开发环境为Python 2.7 + TensorFlow 1.4,现在可能无法直接运行了.如果有兴趣,可以移步我 ...
- python深度神经网络量化_基于Python建立深度神经网络!你学会了嘛?
原标题:基于Python建立深度神经网络!你学会了嘛? 图1 神经网络构造的例子(符号说明:上标[l]表示与第l层:上标(i)表示第i个例子:下标i表示矢量第i项) 单层神经网络 图2 单层神经网络示 ...
- 视频教程-Python疫情监控完整项目实战-Python
Python疫情监控完整项目实战 数据产品讲师,人工智能探索者,15年一线IT研发经验,国内顶级互联网行业工作背景,社区达人,著有长篇连载<胖子哥的大数据之路>,<数据实践之美> ...
- 视频教程-Python+Vue+Django前后端分离项目实战-Python
Python+Vue+Django前后端分离项目实战 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ...
- 递归神经网络RNN——LSTM
递归神经网络RNN--LSTM 1.LSTM的产生原因及优点 2.LSTM网络结构 3.LSTM工作机制 4.LSTM Attention 机制 关于LSTM模型,看懂这篇文章就OK了,不用再看别的了 ...
- 笨办法学Python(第四版)最新版+Python爬虫开发与项目实战+Python网络数据采集+精通Scrapy网络爬虫
笨办法学Python(第四版)最新版+Python爬虫开发与项目实战+Python网络数据采集+精通Scrapy网络爬虫 本资料为最新整理高清带目录pdf,百度网盘下载~~~ 本资料为最新整理高清带目 ...
- 项目实战-----Python编写疫苗信息管理系统
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/weixin_43425784/art ...
最新文章
- php怎么看数据化,3.2.11 查看和判断数据类型
- 减少if else的使用
- SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59
- 项目管理 - 供应商选择 - 重点条件
- 字符串类型str方法
- 【NServiceBus】什么是Saga,Saga能做什么
- P91--商品保存debug完成
- 无限踩坑系列(5)-MySQLdb
- 在2020年学习cocos游戏引擎
- Eclipse-class文件中文乱码
- java 任务栏程序_如何在任务栏显示java程序图标
- React Redux: 从文档看源码 - Components篇
- 原来这就是公文写作总结类模板和计划类模板
- 史上最傻java代码记录
- 泛函分析在计算机科学中的应用,泛函分析 - 重庆师范大学数学科学学院.doc
- 丘成桐:数理与人文(官方完整版PDF下载)(公号回复“丘成桐数学”下载PDF典型资料,欢迎转发、赞赏支持科普)
- 概率论—期末复习速成笔记(自用)
- 全站仪坐标计算机公式,全站仪测量时,坐标n,e,z如何对应于图形坐标x,y,z?...
- 【IntelliJ IDEA插件】Alibaba Cloud AI Coding Assistant
- ant学习笔记—自定义Ant任务
热门文章
- 计算机硬件,Linux系统介绍,centos7.6安装
- 公关活动成功与否的三大关键
- ADB【问题】程序报错:daemon not running; starting now at tcp:5037
- 中国欲主导AI行业:政府企业大力投入 想击败美国
- 第56篇 QML 之 JS控制台输出、注释语句、标识符、字面量与变量
- nvidia cuda windows下gpu内存管理
- linux posix支持中文,如何在Linux中使用POSIX方法从文件中读取Unicode-16字符串?
- Linux下快速删除大量文件/文件夹方法
- rpc服务器太忙共享文件,解决“RPC服务器不可用”的难题
- Vuex中的 mapState