亚洲熟妇av一区二区三区,久久久久久精品观看sss,免费观看四虎精品国产永久,国产成人精品一区二三区熟女,天堂网在线最新版www资源网

零基礎(chǔ):醫(yī)學人工智能科研入門(9.1版)(醫(yī)學人工智能研究)

前沿

2017年,國務(wù)院印發(fā)《新一代人工智能發(fā)展規(guī)劃》,“人工智能 ”寫入2024年政府工作報告。在醫(yī)學領(lǐng)域,人工智能已經(jīng)在影像、內(nèi)鏡圖像識別,電子病歷邏輯判斷等有著大量應(yīng)用,也寫入專家共識,例如《 人工智能在肺結(jié)節(jié)的應(yīng)用專家共識(2022年)》。

近幾年逐步提倡科研與轉(zhuǎn)化相結(jié)合,科研要服務(wù)于應(yīng)用。醫(yī)學人工智能的研究就可以很好的實際應(yīng)用于臨床工作。《Nature》《Science》等學術(shù)期刊均有專題報道,課題方面也是熱門的立項方向。

一、AI醫(yī)學優(yōu)勢:

(一)適合非高校的醫(yī)院的科研:

1、絕對大部分非高校直屬的醫(yī)院,少有獨立的生物學實驗室,生物學實驗室的維護成本極高。而人工智能醫(yī)學研究,算是一種輕資產(chǎn),最為核心的研究環(huán)節(jié)就是算法的構(gòu)建、算力的運用。固然,有專門的軟件和公司提供服務(wù),也可以采取醫(yī)院自建的模式,投入最大的是智力和精力。在經(jīng)費上投入不算多,因為是用于科學研究,對于信息安全等級要求不高,也沒有多少維護費用。

2、跟蛋白組學、基因組學研究類似,人工智能醫(yī)學的研究,其算法是對于臨床各個科室是通用的??蓱?yīng)用于影像組學的核心算法也可以用于構(gòu)建彩超圖像的模型。隨機森林、決策樹不僅可應(yīng)用于預測心肌梗死的預后,也可以應(yīng)用于護理的跌倒風險評估,甚至可擴展到醫(yī)院行政管理。

3、目前,大部分醫(yī)院均實現(xiàn)電子病歷,產(chǎn)生海量的數(shù)據(jù)。而人工智能醫(yī)學的基礎(chǔ)在于數(shù)據(jù)。研究的設(shè)計簡單地歸納為兩個部分,① 臨床數(shù)據(jù)采集和需求、② 模型構(gòu)建和運行。臨床數(shù)據(jù)收集、臨床需求的確定,這個對于絕對部分醫(yī)院來說,是完全沒有問題的。而其中問題最大的是模型構(gòu)建和運行。而這塊跟高校的計算機實驗室恰恰相反,他們?nèi)鄙俚氖桥R床數(shù)據(jù)和需求。

4、做好人工智能醫(yī)學研究,可以有幾個方式。與高校的計算機實驗室合作、第三方集成平臺。但經(jīng)過實踐,再加上絕大部分代碼均可以在github上找到。以及論文的發(fā)表需要調(diào)參和提供原始代碼,醫(yī)院完全可以獨立開發(fā)算法和模型。構(gòu)建自己的人工智能醫(yī)學實驗室。

(二)軟件編程技能培養(yǎng):

目前人工智能的主流編程語言為python。近幾年P(guān)ython流行起來,除了在人工智能領(lǐng)域的應(yīng)用,它在資料收集、數(shù)據(jù)分析方面實在強勢。

只需要幾行簡短的代碼,它就可以:

● 網(wǎng)絡(luò)爬蟲,一鍵爬取全網(wǎng)公開資料

● 對實驗結(jié)果進行數(shù)據(jù)分析,讓觀點更科學嚴謹

● 批量處理上百個Excel、Word、PDF文件

● 生成可視化圖表,成果展示更專業(yè)……

工欲善其事,必先利其器。大數(shù)據(jù)時代,科研人想要如魚得水,學會Python應(yīng)當提上日程。

當前,醫(yī)院為了質(zhì)控控制和流程改造。院內(nèi)上線了各類系統(tǒng),并且還在不斷增加,醫(yī)療信息化建設(shè)是必然趨勢。

對信息系統(tǒng)使用和優(yōu)化,單純依賴信息科會導致迭代周期變慢。熟悉和了解編程原理,這對使用院內(nèi)信息系統(tǒng)有極大的幫助。更好服務(wù)于臨床工作。

(三)研究方向:

醫(yī)學人工智能從應(yīng)用場景角度,可以有以下領(lǐng)域:

① 機器學習(深度學習)決策系統(tǒng):

基于一些復雜數(shù)據(jù)的結(jié)果預測。例如,手術(shù)結(jié)局預測,死亡風險預測。

以手術(shù)成敗,死亡作為target,臨床診療過程中的所有因素做為Feature。流程為① 環(huán)境搭建 ② 數(shù)據(jù)預處理 ③ 選擇算法 ④ 算法訓練 ⑤ 生成模型 ⑥ 模型測試(結(jié)果輸出)。這其中“選擇算法”可以選擇多種算法,對不同算法的結(jié)果進行比較;結(jié)果預測一般涉及機器學習(machine learning)。

“結(jié)果輸出”的指標:precision,ROC,F(xiàn)1, recall。

② 視覺識別(圖像識別):

屬于無監(jiān)督學習。對醫(yī)療圖像進行標簽,主要涉及深度學習(deep learning)。就發(fā)表論文的成功概率來說,圖像識別更容易發(fā)表論文。

③ 自然語言處理:

可用于對病歷文本的數(shù)據(jù)分析和處理。

④ 語音處理:

適用于臨床問診和溝通。

(四)可投稿期刊列表:

1、Ann Transl Med

2、Math Biosci Eng

3、 Sci Rep

4、artificial intelligence in medicine(IF=5.3)

5、Journal of Digital Health

二、零基礎(chǔ)入門步驟:

(一)名詞與關(guān)系:

1.名詞解釋:

人工智能:人工智能(Artificial Intelligence),英文縮寫為AI。它是研究、開發(fā)用于模擬、延伸和擴展人工智能的理論、方法、技術(shù)及應(yīng)用系統(tǒng)的一門新的技術(shù)科學。

人工智能是計算機科學的一個分支,它企圖了解智能的實質(zhì),并生產(chǎn)出一種新的能與人類智能相似的方式做出反應(yīng)的智能機器,該領(lǐng)域的研究包括機器人、語言識別、圖像識別、自然語言處理和專家系統(tǒng)等。

機器學習:機器學習(ML, Machine Learning)是一門多學科交叉專業(yè),涵蓋概率論知識,統(tǒng)計學知識,近似理論知識和復雜算法知識,使用計算機作為工具并致力于真實實時的模擬人類學習方式,并將現(xiàn)有內(nèi)容進行知識結(jié)構(gòu)劃分來有效提高學習效率。

機器學習還有下面幾種定義:

(1)機器學習是一門人工智能的科學,該領(lǐng)域的主要研究對象是人工智能,特別是如何在經(jīng)驗學習中改善具體算法的性能。

(2)機器學習是對能通過經(jīng)驗自動改進的計算機算法的研究。

(3)機器學習是用數(shù)據(jù)或以往的經(jīng)驗,以此優(yōu)化計算機程序的性能標準。

深度學習:深度學習(DL, Deep Learning)是機器學習(ML, Machine Learning)領(lǐng)域中一個新的研究方向,它被引入機器學習使其更接近于最初的目標——人工智能(AI, Artificial Intelligence)。

深度學習是學習樣本數(shù)據(jù)的內(nèi)在規(guī)律和表示層次,這些學習過程中獲得的信息對諸如文字,圖像和聲音等數(shù)據(jù)的解釋有很大的幫助。它的最終目標是讓機器能夠像人一樣具有分析學習能力,能夠識別文字、圖像和聲音等數(shù)據(jù)。深度學習是一個復雜的機器學習算法,在語音和圖像識別方面取得的效果,遠遠超過先前相關(guān)技術(shù)。

Python:一種流行的計算機編程語言。

2. 名詞關(guān)系:

人工智能是一個比較大的概念,更多是面向公眾。機器學習是人工智能實現(xiàn)的一個具體方法,而深度學習是機器學習的一個分支,難度更高。而目前實現(xiàn)機器學習、深度學習的編程,主流還是應(yīng)用python語言。有很多也使用R語言來做機器學習的研究。

(二)工作環(huán)境的搭建:

安裝:目前主流推薦Anaconda。其具體步驟可以按照知乎的這個教程:

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

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

說的是Anaconda安裝好后,就包含了python了。不過,我也沒理清之間的關(guān)系,保險一點可以把Python也安裝了。

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

費用:以上軟件商用是要收費的,不過,安裝的時候選擇個人使用是免費的。

(三)編輯器選擇:

編輯器就是我們編寫代碼的地方,安裝好Anaconda會有多種編輯器。具體哪一種更好,我也正在摸索。

(四)基礎(chǔ)知識:

Python也是一種編程語言,編程語言都有一些規(guī)則。比如,什么是字符串,引號是什么意思,怎么輸出結(jié)果。由于Python應(yīng)用于各個領(lǐng)域,厲害的Python大神都是各大公司搶著要的,我們跨界過去也不可能那么多精力,就主要學習最基本的框架和主要用于醫(yī)學領(lǐng)域的。這里推薦一個B站教學視頻:

https://www.bilibili.com/video/BV1rg411G7mp\”>

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

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

1、Python內(nèi)部環(huán)境部署:

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上下載源碼,對于醫(yī)學人工智能,最需要用到feature-selector的庫, 而這個庫只有g(shù)ithub上有。

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 機器學習環(huán)境部署標準三聯(lián):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

常用語法和邏輯:

1)對于Python而言,冒號和縮進是一種語法。它會幫助Python區(qū)分代碼之間的層次,理解條件執(zhí)行的邏輯及先后順序?!咀ⅲ嚎s進是四個空格或一個Tab鍵】

2)注意大小寫:name 'Fs' is not defined,F(xiàn)s,沒有被定義。最后發(fā)現(xiàn)是大小寫錯誤。前后代碼的大小寫一定要一致,否則會報錯。

3)使用jupter的時候,由于賦值的問題,需要重頭開始運行。如果,在某個代碼段運行報錯,有可能出現(xiàn)賦值錯誤。

1.3 ROC曲線的制作:

ROC曲線的全稱是“受試者工作特性”曲線(Receiver Operating Characteristic),源于二戰(zhàn)中用于敵機檢測的雷達信號分析技術(shù)。是反映敏感性和特異性的綜合指標。它通過將連續(xù)變量設(shè)定出多個不同的臨界值,從而計算出一系列敏感性和特異性,再以敏感性為縱坐標、(1-特異性)為橫坐標繪制成曲線,曲線下面積越大,判別的準確性越高。在ROC曲線上,最靠近坐標圖左上方的點為敏感性和特異性均較高的臨界值。

## 輸出高清圖像

%config InlineBackend.figure_format = 'retina'

%matplotlib inline

ROC曲線做出來是一個圖像,所以,需要matplotlib這個庫,這個庫是python里面非常有用的庫。還可以做直方圖、散點圖、折線圖。也就不必另外用統(tǒng)計圖軟件了。

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 就是我們用來數(shù)據(jù)歸回/分類評估的核心庫。這個import*,后面這個*要注意,是包含所有模塊,但是使用有爭議,暫時也沒有找到其他代碼,先用著吧。

2、數(shù)據(jù)處理:

2.1、數(shù)據(jù)格式與提?。?/span>

我們就可以數(shù)據(jù)預處理。Python是可以支持CSV、Excel的數(shù)據(jù)庫格式,CSV可以直接從醫(yī)院的HIS系統(tǒng)導出,如果對于海量數(shù)據(jù)還是要選擇這種格式。用EXCEL比較適合大部分醫(yī)療從業(yè)者。

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/科研數(shù)據(jù)//腎內(nèi)科/DKD數(shù)據(jù)庫給韜哥5.xlsx'dataset= pd.read_excel(a,sheet_name = 'Sheet1')dataset.head() #顯示前幾排數(shù)據(jù)x=dataset.iloc[:,0:49] # iloc 定位到列y=dataset.iloc[:,49]print(x)print(y)

2.2數(shù)據(jù)結(jié)構(gòu):

數(shù)組(Array)是由相同類型的元素(element)集合組成的固定長度(Size)的一種數(shù)據(jù)結(jié)構(gòu)。

2.3 數(shù)據(jù)處理:

這里用了泰坦尼克號的數(shù)據(jù)案例:

train = pd.read_csv("data/Titanic處理后數(shù)據(jù).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的符號格式有三種:字符串、整數(shù)、浮點數(shù),那么,像臨床常用的基線數(shù)據(jù),“姓名”“性別”就需要轉(zhuǎn)換為Python可識別的數(shù)據(jù)。以上代碼就是轉(zhuǎn)換用。

3、模型構(gòu)建:

# 確定目標變量和自變量,目標變量:我們要研究的目標。例如,我如果想研究息肉切除后出現(xiàn)風險,就可以定義為:

Target= [“bleed”]

# 定義模型的自變量名

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

也可以表述為自己提取對應(yīng)的數(shù)據(jù):

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

使用feature_selector進行,feature篩選。累積權(quán)重不同,可以影響最后結(jié)果輸出的效果。

##將訓練集切分為訓練集和驗證集

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) # 樣本進行劃分

機器學習的數(shù)據(jù)要分為兩個部分:訓練集、驗證集。這句代碼就是把數(shù)據(jù)進行分割。不過,一般都是2:8分。20%用來驗證。

下面的程序中使用RandomForestClassifier()函數(shù)建立了包含100個決策樹,最大深度為5的隨機森林模型,針對訓練好的模型并計算出其它訓練集和驗證集上的預測精度。

## 使用隨機森林對泰坦尼克數(shù)據(jù)進行分類

rfc1 = RandomForestClassifier(n_estimators = 100, # 樹的數(shù)量

max_depth= 5, # 子樹最大深度

oob_score=True,

class_weight = "balanced",

random_state=1)

rfc1.fit(X_train,y_train)

4、結(jié)果輸出:

## 輸出其在訓練數(shù)據(jù)和驗證數(shù)據(jù)集上的預測精度

rfc1_lab = rfc1.predict(X_train)

rfc1_pre = rfc1.predict(X_val)

print("隨機森林的OOB score:",rfc1.oob_score_)

print("訓練數(shù)據(jù)集上的精度:",accuracy_score(y_train,rfc1_lab))

print("驗證數(shù)據(jù)集上的精度:",accuracy_score(y_val,rfc1_pre))

但是,為了讓論文更好發(fā)表,最好有圖片。

## 可視化在驗證集上的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結(jié)果。

三、常用python算法庫:

1)Scikitlearn:是一個常用的算法庫:相關(guān)代碼可參考:
https://mp.weixin.qq.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)

四、未完待續(xù):

除了預測類的機器學習,還有結(jié)合深度學習的影像組學,難度更高,但真實世界中的應(yīng)用場景更多,更有利于轉(zhuǎn)化,可以參考:
https://www.madao33.com/post/7/

該教程文檔不斷更新,版本號越高,就是最新版,上面很多代碼在運行中還有很多bug,希望更多同行進行交流,互相提供代碼和教程,目前跟朋友一起合作了一篇文章,相關(guān)代碼分享在ganbingliangyi (taoliang梁韜) (github.com)

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。