近几年逐步提倡科研与转化相结合,科研要做事于运用。
医学人工智能的研究就可以很好的实际运用于临床事情。
《Nature》《Science》等学术期刊均有专题宣布,课题方面也是热门的立项方向。

零根本:医学人工智能科研入门(9.1版)_数据_人工智能 云服务

一、AI医学上风:

(一)适宜非高校的医院的科研:

1、绝对大部分非高校直属的医院,少有独立的生物学实验室,生物学实验室的掩护本钱极高。
而人工智能医学研究,算是一种轻资产,最为核心的研究环节便是算法的构建、算力的利用。
固然,有专门的软件和公司供应做事,也可以采纳医院自建的模式,投入最大的是智力和精力。
在经费上投入不算多,由于是用于科学研究,对付信息安全等级哀求不高,也没有多少掩护用度。

2、跟蛋白组学、基因组学研究类似,人工智能医学的研究,其算法是对付临床各个科室是通用的。
可运用于影像组学的核心算法也可以用于构建彩超图像的模型。
随机森林、决策树不仅可运用于预测心肌梗去世的预后,也可以运用于照顾护士的跌倒风险评估,乃至可扩展到医院行政管理。

3、目前,大部分医院均实现电子病历,产生海量的数据
而人工智能医学的根本在于数据。
研究的设计大略地归纳为两个部分,① 临床数据采集和需求、② 模型构建和运行。
临床数据网络、临床需求的确定,这个对付绝对部分医院来说,是完备没有问题的。
而个中问题最大的是模型构建和运行。
而这块跟高校的打算机实验室正好相反,他们短缺的是临床数据和需求。

4、做年夜大好人工智能医学研究,可以有几个办法。
与高校的打算机实验室互助、第三方集成平台。
但经由实践,再加上绝大部分代码均可以在github上找到。
以及论文的揭橥须要调参和供应原始代码,医院完备可以独立开拓算法和模型。
构建自己的人工智能医学实验室。

(二)软件编程技能培养:

目前人工智能的主流编程措辞为python。
近几年Python盛行起来,除了在人工智能领域的运用,它在资料网络、数据剖析方面实在强势。

只须要几行简短的代码,它就可以:

● 网络爬虫,一键爬取全网公开资料

● 对实验结果进行数据剖析,让不雅观点更科学严谨

● 批量处理上百个Excel、Word、PDF文件

● 天生可视化图表,成果展示更专业……

工欲善其事,必先利其器。
大数据时期,科研人想要如鱼得水,学会Python应该提上日程。

当前,医院为了质控掌握和流程改造。
院内上线了各种系统,并且还在不断增加,医疗信息化培植是一定趋势。

对信息系统利用和优化,纯挚依赖信息科会导致迭代周期变慢。
熟习和理解编程事理,这对利用院内信息系统有极大的帮助。
更好做事于临床事情。

(三)研究方向:

医学人工智能从运用处景角度,可以有以下领域:

① 机器学习(深度学习)决策系统:

基于一些繁芜数据的结果预测。
例如,手术结局预测,去世亡风险预测。

以手术成败,去世亡作为target,临床诊疗过程中的所怀孕分做为Feature。
流程为① 环境搭建 ② 数据预处理 ③ 选择算法 ④ 算法演习 ⑤ 天生模型 ⑥ 模型测试(结果输出)。
这个中“选择算法”可以选择多种算法,对不同算法的结果进行比较;结果预测一样平常涉及机器学习(machine learning)。

“结果输出”的指标:precision,ROC,F1, recall。

② 视觉识别(图像识别):

属于无监督学习。
对医疗图像进行标签,紧张涉及深度学习(deep learning)。
就揭橥论文的成功概率来说,图像识别更随意马虎揭橥论文。

③ 自然措辞处理:

可用于对病历文本的数据剖析和处理。

④ 语音处理:

适用于临床问诊和沟通。

(四)可投稿期刊列表:

1、Ann Transl Med

2、Math Biosci Eng

3、 Sci Rep

4、artificial intelligence in medicine(IF=5.3)

5、Journal of Digital Health

二、零根本入门步骤:

(一)名词与关系:

1.名词阐明:

人工智能:人工智能(Artificial Intelligence),英文缩写为AI。
它是研究、开拓用于仿照、延伸和扩展人工智能的理论、方法、技能及运用系统的一门新的技能科学。

人工智能是打算机科学的一个分支,它企图理解智能的本色,并生产出一种新的能与人类智能相似的办法做出反应的智能机器,该领域的研究包括机器人、措辞识别、图像识别、自然措辞处理和专家系统等。

机器学习:机器学习(ML, Machine Learning)是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和繁芜算法知识,利用打算机作为工具并致力于真实实时的仿照人类学习办法,并将现有内容进行知识构造划分来有效提高学习效率。

机器学习还有下面几种定义:

(1)机器学习是一门人工智能的科学,该领域的紧张研究工具是人工智能,特殊是如何在履历学习中改进详细算法的性能。

(2)机器学习是对能通过履历自动改进的打算机算法的研究。

(3)机器学习是用数据或以往的履历,以此优化打算机程序的性能标准。

深度学习:深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更靠近于最初的目标——人工智能(AI, Artificial Intelligence)。

深度学习是学习样本数据的内在规律和表示层次,这些学习过程中得到的信息对诸如笔墨,图像和声音等数据的阐明有很大的帮助。
它的终极目标是让机器能够像人一样具有剖析学习能力,能够识别笔墨、图像和声音等数据。
深度学习是一个繁芜的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前干系技能。

Python:一种盛行的打算机编程措辞。

2. 名词关系:

人工智能是一个比较大的观点,更多是面向"大众。
机器学习是人工智能实现的一个详细方法,而深度学习是机器学习的一个分支,难度更高。
而目前实现机器学习、深度学习的编程,主流还是运用python措辞。
有很多也利用R措辞来做机器学习的研究。

(二)事情环境的搭建:

安装:目前主流推举Anaconda。
其详细步骤可以按照知乎的这个教程:

① Anaconda安装https://zhuanlan.zhihu.com/p/339690068

② Anaconda安装https://zhuanlan.zhihu.com/p/432043531

说的是Anaconda安装好后,就包含了python了。
不过,我也没理清之间的关系,保险一点可以把Python也安装了。

Python的安装:https://zhuanlan.zhihu.com/p/363708165

用度:以上软件商用是要收费的,不过,安装的时候选择个人利用是免费的。

(三)编辑器选择:

编辑器便是我们编写代码的地方,安装好Anaconda会有多种编辑器。
详细哪一种更好,我也正在摸索。

(四)根本知识:

Python也是一种编程措辞,编程措辞都有一些规则。
比如,什么是字符串,引号是什么意思,怎么输出结果。
由于Python运用于各个领域,厉害的Python大神都是各大公司抢着要的,我们跨界过去也不可能那么多精力,就紧张学习最基本的框架和紧张用于医学领域的。
这里推举一个B站传授教化***:

https://www.bilibili.com/video/BV1rg411G7mp?from=search&seid=4851026855846953069&spm_id_from=333.337.0.0

此外,也可以看官方文档:

https://docs.python.org/3/tutorial/modules.html#importing-from-a-package

1、Python内部环境支配:

1.1 python库的安装:

python库的安装有四个方法,紧张分为在线安装和离线安装。

在线安装:利用Anaconda prompt 界面 > pip install XXX

离线安装:

1)在Python Extension Packages for Windows - Christoph Gohlke (uci.edu) ***轮子>利用Anaconda prompt 界面 > cd 事情目录 >pip install 轮子路径+轮子名称

2)github高***源码,对付医学人工智能,最须要用到feature-selector的库, 而这个库只有github上有。

WillKoehrsen/feature-selector: Feature selector is a tool for dimensionality reduction of machine learning datasets (github.com)github.com/WillKoehrsen/feature-selector

我在这个问题上卡了良久。
下好源码后,解压压缩包。
利用Anaconda prompt 界面 > cd 事情目录 >python setup.py install

1.2 机器学习环境支配标准三联:

import numpy as npimport pandas as pdimport matplotlib.pyplot as plt

常用语法和逻辑:

1)对付Python而言,冒号和缩进是一种语法。
它会帮助Python区分代码之间的层次,理解条件实行的逻辑及先后顺序。
【注:缩进是四个空格或一个Tab键】

2)把稳大小写:name 'Fs' is not defined,Fs,没有被定义。
末了创造是大小写缺点。
前后代码的大小写一定要同等,否则会报错。

3)利用jupter的时候,由于赋值的问题,须要重头开始运行。
如果,在某个代码段运行报错,有可能涌现赋值缺点。

1.3 ROC曲线的制作:

ROC曲线的全称是“受试者事情特性”曲线(Receiver Operating Characteristic),源于二战中用于敌机检测的雷达旗子暗记剖析技能。
是反响敏感性和特异性的综合指标。
它通过将连续变量设定出多个不同的临界值,从而打算出一系列敏感性和特异性,再以敏感性为纵坐标、(1-特异性)为横坐标绘制成曲线,曲线下面积越大,判别的准确性越高。
在ROC曲线上,最靠近坐标图左上方的点为敏感性和特异性均较高的临界值。

## 输出高清图像

%config InlineBackend.figure_format = 'retina'

%matplotlib inline

ROC曲线做出来是一个图像,以是,须要matplotlib这个库,这个库是python里面非常有用的库。
还可以做直方图、散点图、折线图。
也就不必其余用统计图软件了。

matplotlib.rcParams['axes.unicode_minus']=False

import seaborn as sns

sns.set(font= "Kaiti",style="ticks",font_scale=1.4)

import pandas as pd

pd.set_option("max_colwidth", 200)

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from sklearn.preprocessing import LabelEncoder,label_binarize

from sklearn.model_selection import train_test_split

from sklearn.ensemble import RandomForestClassifier

from sklearn.metrics import

这个中,sklearn.metrics 便是我们用来数据归回/分类评估的核心库。
这个import,后面这个要把稳,是包含所有模块,但是利用有争议,暂时也没有找到其他代码,先用着吧。

2、数据处理:

2.1、数据格式与提取:

我们就可以数据预处理。
Python是可以支持CSV、Excel的数据库格式,CSV可以直接从医院的HIS系统导出,如果对付海量数据还是要选择这种格式。
用EXCEL比较适宜大部分医疗从业者。

CSV格式:(代码如下)

import pandas as pd

import csv

with open('A.csv','r') as csvfile:

reader = csv.DictReader(csvfile)

column = [row['Age'] for row in reader]

Execl格式:(代码如下)

import numpy as npimport pandas as pdplt.rc('font',family='Times New Roman')a = 'C:/Users/46685/Desktop/科研数据//肾内科/DKD数据库给韬哥5.xlsx'dataset= pd.read_excel(a,sheet_name = 'Sheet1')dataset.head() #显示前几排数据x=dataset.iloc[:,0:49] # iloc 定位到列y=dataset.iloc[:,49]print(x)print(y)

2.2数据构造:

数组(Array)是由相同类型的元素(element)凑集组成的固定长度(Size)的一种数据构造。

2.3 数据处理:

这里用了泰坦尼克号的数据案例:

train = pd.read_csv("data/Titanic处理后数据.csv")

# 将字符串类型的分类变量进行重新编码

label = LabelEncoder()

train["Name"] = label.fit_transform(train["Name"])

train["Embarked"] = label.fit_transform(train["Embarked"])

train["Sex"] = label.fit_transform(train["Sex"])

Python的符号格式有三种:字符串、整数、浮点数,那么,像临床常用的基线数据,“姓名”“性别”就须要转换为Python可识别的数据。
以上代码便是转换用。

3、模型构建:

# 确定目标变量和自变量,目标变量:我们要研究的目标。
例如,我如果想研究息肉切除后涌现风险,就可以定义为:

Target= [“bleed”]

# 定义模型的自变量名

train_x = ["Pclass", "Name", "Sex", "Age", "SibSp", "Parch","Fare","Embarked"]

也可以表述为自己提取对应的数据:

x=dataset.iloc[:,0:17]y=dataset.iloc[:,17]print(x)print(y)

利用feature_selector进行,feature筛选。
累积权重不同,可以影响末了结果输出的效果。

##将演习集切分为演习集和验证集

from sklearn.model_selection import train_test_split #导入样本划分的库x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=0) # 样本进行划分

机器学习的数据要分为两个部分:演习集、验证集。
这句代码便是把数据进行分割。
不过,一样平常都是2:8分。
20%用来验证。

下面的程序中利用RandomForestClassifier()函数建立了包含100个决策树,最大深度为5的随机森林模型,针对演习好的模型并打算出其它演习集和验证集上的预测精度。

## 利用随机森林对泰坦尼克数据进行分类

rfc1 = RandomForestClassifier(n_estimators = 100, # 树的数量

max_depth= 5, # 子树最大深度

oob_score=True,

class_weight = "balanced",

random_state=1)

rfc1.fit(X_train,y_train)

4、结果输出:

## 输出其在演习数据和验证数据集上的预测精度

rfc1_lab = rfc1.predict(X_train)

rfc1_pre = rfc1.predict(X_val)

print("随机森林的OOB score:",rfc1.oob_score_)

print("演习数据集上的精度:",accuracy_score(y_train,rfc1_lab))

print("验证数据集上的精度:",accuracy_score(y_val,rfc1_pre))

但是,为了让论文更好揭橥,最好有图片。

## 可视化在验证集上的Roc曲线

pre_y = rfc1.predict_proba(X_val)[:, 1]

fpr_Nb, tpr_Nb, _ = roc_curve(y_val, pre_y)

aucval = auc(fpr_Nb, tpr_Nb) # 打算auc的取值

plt.figure(figsize=(10,8))

plt.plot([0, 1], [0, 1], 'k--')

plt.plot(fpr_Nb, tpr_Nb,"r",linewidth = 3)

plt.grid()

plt.xlabel("假正率")

plt.ylabel("真正率")

plt.xlim(0, 1)

plt.ylim(0, 1)

plt.title("随机森林ROC曲线")

plt.text(0.15,0.9,"AUC = "+str(round(aucval,4)))

plt.show()

末了得出这么一个ROC结果。

三、常用python算法库:

1)Scikitlearn:是一个常用的算法库:干系代码可参考:https://mp.weixin.***.com/s/c-Sl7n_ceawz6AHm5Mtw0w

2)机器学习常用算法:

eXtreme Gradient Boosting (XGBoost),

Adaptive Boosting(AdaBoost),

Decision Tree (DT),

Support vector machines (SVM),

Random Forest (RF)

Gradient Boosting Decision Tree (GBDT)

LogisticRegression(LR)

四、未完待续:

除了预测类的机器学习,还有结合深度学习的影像组学,难度更高,但真实天下中的运用处景更多,更有利于转化,可以参考:https://www.madao33.com/post/7/

该教程文档不断更新,版本号越高,便是最新版,上面很多代码在运行中还有很多bug,希望更多同行进行互换,相互供应代码和教程,目前跟朋友一起互助了一篇文章,干系代码分享在ganbingliangyi (taoliang梁韬) (github.com)