声明:本文示例来自于GitHub用户vkasojhaa的项目,一切权利归其所有,此处仅是自己学习分享。


实现了基于机器学习的乳腺癌的恶性和良性预测,比较了不同机器学习算法之间的性能。主要目的是评估在每种算法的准确性和效率方面对数据进行分类的正确性。


loss

# 损失值:预估值与实际值之间的均方差

optimizer

# 优化器

trainer = optimizer.minimize(loss)

# 训练:最小化损失函数

基于机器学习(ANN)的乳腺癌预测

代码示例

#导入依赖库
#!/usr/bin/python3
from __future__ import print_function
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from IPython.display import clear_output
from keras.utils import plot_model
#载入数据并进行数据预处理
data = pd.read_csv("data.csv")
data.head()
data.drop('id',axis=1,inplace=True)
data.drop('Unnamed: 32',axis=1,inplace=True)
data['diagnosis'] = data['diagnosis'].map({'M':1,'B':0})
data.head()

print("Row, Col", data.shape)# (row,col)
(data['diagnosis'][:398]==1).sum(),(data['diagnosis'][:398]==0).sum()
(data['diagnosis'][398:]==1).sum(),(data['diagnosis'][398:]==0).sum()
mat=data.as_matrix()
mat.shape
mat

模型训练:

#Using 2 Sigmoid Layers and RMSprop optimizer
model2 = Sequential()
model2.add(Dense(500, activation='sigmoid', use_bias=True, input_shape=(30,)))
model2.add(Dense(1, activation='sigmoid'))
keras.optimizers.RMSprop(lr=0.01, rho=0.9, epsilon=None, decay=0.0)
model2.compile(optimizer='rmsprop',loss='binary_crossentropy', metrics=['accuracy'])
history01 = model2.fit(mat[:,1:],mat[:,0], validation_split=0.3,shuffle=False,epochs=3000, batch_size=128,verbose=0)
score = model2.evaluate(mat[:398,1:],mat[:398,0], verbose=0, batch_size=128)
print('Train loss:', score[0])
print('Train accuracy:', score[1])
Train loss: 0.00821199454791287
Train accuracy: 1.0
score = model2.evaluate(mat[398:,1:],mat[398:,0], verbose=0, batch_size=128)
print('Validation loss:', score[0])
print('Validation accuracy:', score[1])
Validation loss: 0.1262894694568121
Validation accuracy: 0.9473684154755888
plt.plot(history01.history['acc'], label='acc')
plt.plot(history01.history['val_acc'], label='val_acc')
plt.legend()
plt.show()
plt.plot(history01.history['loss'], label='loss')
plt.plot(history01.history['val_loss'], label='val_loss')
plt.legend()
plt.show()
count=0
for i in history01.history['acc']:if i>0.99:count+=1
print(count)

#Using 3 Sigmoid Layers and RMSprop optimizer
model3 = Sequential()
model3.add(Dense(500, activation='sigmoid', use_bias=True, input_shape=(30,)))
model3.add(Dense(500, activation='sigmoid', use_bias=True))
model3.add(Dense(1, activation='sigmoid'))
keras.optimizers.RMSprop(lr=0.01, rho=0.9, epsilon=None, decay=0.0)
model3.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])
history0 = model3.fit(mat[:,1:],mat[:,0], validation_split=0.3,shuffle=False,epochs=3000, batch_size=128, verbose=0)
score2 = model3.evaluate(mat[:398,1:],mat[:398,0], verbose=0, batch_size=128)
print('Train loss:', score2[0])
print('Train accuracy:', score2[1])
Train loss: 0.011901359889894986
Train accuracy: 0.992462311557789
score2 = model3.evaluate(mat[398:,1:],mat[398:,0], verbose=0, batch_size=128)
print('Validation loss:', score2[0])
print('Validation accuracy:', score2[1])
Validation loss: 0.0804629116945448
Validation accuracy: 0.9707602311296073
plt.plot(history0.history['acc'], label='acc')
plt.plot(history0.history['val_acc'], label='val_acc')
plt.legend()
plt.show()
plt.plot(history0.history['loss'], label='loss')
plt.plot(history0.history['val_loss'], label='val_loss')
plt.legend()
plt.show()
count=0
for i in history0.history['acc']:if i>0.99:count+=1
print(count)

#Using 3 Sigmoid Layers and RMSprop optimizer
model3 = Sequential()
model3.add(Dense(500, activation='sigmoid', use_bias=True, input_shape=(30,)))
model3.add(Dense(500, activation='sigmoid', use_bias=True))
model3.add(Dense(1, activation='sigmoid'))
keras.optimizers.RMSprop(lr=0.01, rho=0.9, epsilon=None, decay=0.0)
model3.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])
history0 = model3.fit(mat[:,1:],mat[:,0], validation_split=0.3,shuffle=False,epochs=3000, batch_size=128, verbose=0)
score2 = model3.evaluate(mat[:398,1:],mat[:398,0], verbose=0, batch_size=128)
print('Train loss:', score2[0])
print('Train accuracy:', score2[1])
Validation loss: 0.0804629116945448
Validation accuracy: 0.9707602311296073
plt.plot(history0.history['acc'], label='acc')
plt.plot(history0.history['val_acc'], label='val_acc')
plt.legend()
plt.show()
plt.plot(history0.history['loss'], label='loss')
plt.plot(history0.history['val_loss'], label='val_loss')
plt.legend()
plt.show()
count=0
for i in history0.history['acc']:if i>0.99:count+=1
print(count)

#Using 4 Sigmoid Layers and RMSprop optimizer
model4 = Sequential()
model4.add(Dense(500, activation='sigmoid', use_bias=True, input_shape=(30,)))
model4.add(Dense(500, activation='sigmoid', use_bias=True))
model4.add(Dense(500, activation='sigmoid', use_bias=True))
model4.add(Dense(1, activation='sigmoid'))
keras.optimizers.RMSprop(lr=0.01, rho=0.9, epsilon=None, decay=0.0)
model4.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])
history1 = model4.fit(mat[:,1:],mat[:,0], validation_split=0.3,shuffle=False,epochs=3000, batch_size=128, verbose=0)
#model.evaluate(mat[:,1:],mat[:,0], batch_size=None, verbose=1, sample_weight=None, steps=None)
score = model4.evaluate(mat[:398,1:],mat[:398,0], verbose=0, batch_size=128)
print('Train loss:', score[0])
print('Train accuracy:', score[1])
Train loss: 0.1454299822000403
Train accuracy: 0.9346733668341709
score = model4.evaluate(mat[398:,1:],mat[398:,0], verbose=0, batch_size=128)
print('Validation loss:', score[0])
print('Validation accuracy:', score[1])
Validation loss: 0.33671002412400053
Validation accuracy: 0.8830409339296887
plt.plot(history1.history['acc'], label='acc')
plt.plot(history1.history['val_acc'], label='val_acc')
plt.legend()
plt.show()
plt.plot(history1.history['loss'], label='loss')
plt.plot(history1.history['val_loss'], label='val_loss')
plt.legend()
plt.show()
count=0
for i in history1.history['acc']:if i>0.99:count+=1
print(count)


Connecting artificial intelligence (AI) with pharmaceutical sciences.


参考资料:

https://github.com/vkasojhaa/Clinical-Decision-Support-using-Machine-Learning

基于机器学习的临床决策支持-ANN相关推荐

  1. 基于机器学习的临床决策支持

    声明:本文示例来自于GitHub用户vkasojhaa的项目,一切权利归其所有,此处仅是自己学习分享. 实现了基于机器学习的乳腺癌的恶性和良性预测,比较了不同机器学习算法之间的性能.主要目的是评估在每 ...

  2. 【强化学习-医疗】用于临床决策支持的深度强化学习:简要综述

    Article 作者:Siqi Liu, Kee Yuan Ngiam, Mengling Feng 文献题目:用于临床决策支持的深度强化学习:简要综述 文献时间:2019 文献链接:https:// ...

  3. NLP电子病历后结构化软件系统对临床决策支持系统(CDSS)的支持(结构化数据的必要性)

    我们是专注于电子病历后结构化研究的人工智能研发团队,微信wxid123765fg 评级对电子病历的智能化要求越来越高,提升电子病历智能化层级,使之成为临床决策支持工具,是医院临床信息化发展的重要方向, ...

  4. python爬取电子病历_自然语言处理技术应用于电子病历后结构化系统对临床决策支持系统(CDSS)的支持...

    评级对电子病历的智能化要求越来越高,提升电子病历智能化层级,使之成为临床决策支持工具,是医院临床信息化发展的重要方向,那么电子病历后结构化对临床辅助决策有什么帮助呢? 电子病历的数据包含了临床决策所需 ...

  5. 计算机化信息系统 医疗,浅述监护信息系统在临床决策信息化建设中的价值

    从20世纪70年代起,信息技术被逐步系统化地应用于医疗卫生行业.信息化架构下的高效与广泛,可更好的实现患者临床医疗信息的收集和处理,帮助医生积累和挖掘临床知识,提供有效的临床咨询.辅助诊疗及临床决策等 ...

  6. 《机器学习》西瓜书课后习题4.3——python实现基于信息熵划分的决策树算法(简单、全面)

    <机器学习>西瓜书课后习题4.3--python实现基于信息熵划分的决策树算法 <机器学习>西瓜书P93 4.3 试编程实现基于信息熵进行划分选择的决策树算法,并为表4.3中数 ...

  7. R语言基于dcurves包绘制COX回归临床决策曲线

    因为R的rmda包做不了COX回归临床决策曲线,很多朋友都是通过ggdca包来绘制COX回归临床决策曲线,最近很多粉丝使用ggdca包来绘制COX回归临床决策曲线出现问题过来问我,我绘制的时候没发现什 ...

  8. 基于GIS的地震现场应急信息管理与决策支持平台

    建设背景 针对现场救援行动过程(准备.机动.行动.撤离.总结)的指挥和管理,通过建设具备现场灾情收集.指挥辅助决策以及行动过程管理等功能的地震现场应急信息管理与决策支持平台,为数据快速采集,救援目标快 ...

  9. 深度 | Nature论文:无监督表征学习,用电子健康病历增强临床决策

    参考地址选自 Nature 作者:Riccardo Miotto, Li Li, Brian A. Kidd & Joel T. Dudley 机器之心编译 参与:吴攀.亚洲.孙睿.微胖 引言 ...

最新文章

  1. Citrix 未注册解决办法
  2. 用非递归方式实现二叉树中序遍历
  3. android-x86 镜像iso下载_Windows 10(1909)最新12月更新版MSDN官方简体中文原版ISO镜像下载+激huo工ju...
  4. 【桶】220.存在重复元素 III 【LeetCode】
  5. Android 获取当前的时间。年月日,时分秒,星期几
  6. LeetCode 1311. 获取你好友已观看的视频(BFS+哈希map+vector排序)
  7. 此项目与visual studio的当前版本不兼容_新MacBook能用旧软件?可能是最详细的兼容测试...
  8. 一文看懂语音识别 - ASR(基本原理 + 4个实现流程)
  9. 锻造完美U盘小偷:活用消息机制
  10. C++重载运算符的规则详解
  11. PHP7-MySQLi在分页中的应用
  12. iPhone官方资料链接
  13. 负载均衡策略_高负荷小区负载均衡策略建议
  14. sci期刊投稿指南 计算机科学 人工智能方向 145本sci期刊目录 从一区到四区(2022年 最新影响因子更新了)
  15. python 超像素分割
  16. 阿里云文字转语音接口
  17. Tafel 曲线绘制
  18. 《数据驱动 从方法到实践》之 数据驱动的环节 学习总结
  19. java面试考点精讲视频教程!
  20. CREO教程——1 初始配置

热门文章

  1. 别再用 kill -9 了,这才是微服务上下线的正确姿势!
  2. 某程序员求助:求职大厂时合并简历,如今面试已过,还能坦白吗?
  3. 高可用架构设计之无状态服务
  4. 如何理解 RESTful 的幂等性
  5. 程序员吐槽职场戏精:凌晨三点半发周报,太装了!
  6. Scrum Master的职业发展路线
  7. 怎么用Leangoo管理Bug
  8. All-in-One 模式安装 KubeSphere 异常问题记录
  9. 批处理 bat 提取项目war包
  10. HTML的标签描述1