《Python醫(yī)學(xué)數(shù)據(jù)分析》課件 第7章 機(jī)器學(xué)習(xí)基礎(chǔ)及醫(yī)學(xué)應(yīng)用_第1頁
《Python醫(yī)學(xué)數(shù)據(jù)分析》課件 第7章 機(jī)器學(xué)習(xí)基礎(chǔ)及醫(yī)學(xué)應(yīng)用_第2頁
《Python醫(yī)學(xué)數(shù)據(jù)分析》課件 第7章 機(jī)器學(xué)習(xí)基礎(chǔ)及醫(yī)學(xué)應(yīng)用_第3頁
《Python醫(yī)學(xué)數(shù)據(jù)分析》課件 第7章 機(jī)器學(xué)習(xí)基礎(chǔ)及醫(yī)學(xué)應(yīng)用_第4頁
《Python醫(yī)學(xué)數(shù)據(jù)分析》課件 第7章 機(jī)器學(xué)習(xí)基礎(chǔ)及醫(yī)學(xué)應(yīng)用_第5頁
已閱讀5頁,還剩85頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第七章

機(jī)器學(xué)習(xí)基礎(chǔ)及醫(yī)學(xué)應(yīng)用機(jī)器學(xué)習(xí)基本概念scikit-learn庫簡介及常用API線性回歸K

N

N

法邏輯回歸樸素貝葉斯分類器決策樹與隨機(jī)森林支持向量機(jī)算法關(guān)聯(lián)規(guī)則算法K-means算法7.17.27.37.47.57.67.77.87.97

.

10○內(nèi)容導(dǎo)航CON

TEN

T

S●機(jī)器學(xué)習(xí)是人工智能的一個重要分支,專注于開發(fā)能夠從數(shù)據(jù)

中自動學(xué)習(xí)并構(gòu)建模型的方法和技術(shù)。這些模型被用來分析新

的數(shù)據(jù)集并做出預(yù)測或決策?!窈喍灾瑱C(jī)器學(xué)習(xí)就是通過數(shù)據(jù)驅(qū)動的方式,構(gòu)建模型以實

現(xiàn)對新數(shù)據(jù)的有效分析和預(yù)測。??

7.1機(jī)器學(xué)習(xí)基本概念

第七章

機(jī)器學(xué)習(xí)

3假定有一組患

者數(shù)據(jù)集,該

數(shù)據(jù)集包括患

者的年齡、性

別、身高、體

重、體溫、血

壓,以及是否

患病等信息,

我們用這組數(shù)

據(jù)來構(gòu)建疾病

預(yù)測模型。訓(xùn)練集劃分?jǐn)?shù)據(jù)集年齡性別身高體重體溫血壓患病未患病數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)屬性/特征/

自變量標(biāo)簽?

7.1機(jī)器學(xué)習(xí)基本概念第七章

機(jī)器學(xué)習(xí)

4評價結(jié)果模型評價模型訓(xùn)練測試集模型01OPTION數(shù)據(jù)采集指收集和獲取用于訓(xùn)練

模型的數(shù)據(jù)。04OPTION模型評估

使用測試數(shù)據(jù)評估模型性能。02OPTION數(shù)據(jù)預(yù)處理

指對原始數(shù)據(jù)進(jìn)行清洗、轉(zhuǎn)換和整合的過程。05OPTION模型部署將模型部署到業(yè)務(wù)系統(tǒng)(如

疾病診斷小程序)進(jìn)行應(yīng)用。03OPTION模型訓(xùn)練

指使用訓(xùn)練數(shù)據(jù)對模型

(如決策樹、邏輯回歸、神經(jīng)網(wǎng)絡(luò)、

支持向量機(jī)、貝葉斯網(wǎng)絡(luò)等模型)進(jìn)行訓(xùn)練和優(yōu)化??

7.1機(jī)器學(xué)習(xí)基本概念

第七章機(jī)器學(xué)習(xí)

5數(shù)據(jù)預(yù)處理模型

評估模型

訓(xùn)練數(shù)據(jù)

采集模型

部署機(jī)器學(xué)習(xí)過程●

有監(jiān)督學(xué)習(xí)是指利用帶標(biāo)簽(如“是否患病”)的樣本來優(yōu)化

算法參數(shù)使其性能提高的過程?!?/p>

輸出變量為連續(xù)變量的預(yù)測問

題稱為回歸問題,如,通過房

屋面積預(yù)測房屋價格;●

輸出變量為有限個離散變量的

預(yù)測問題稱為分類問題,如,

通過患者癥狀預(yù)測疾病類型。●

有監(jiān)督算法常見的有:線性回

歸,神經(jīng)網(wǎng)絡(luò),決策樹,邏輯

回歸,支持向量機(jī),

KNN

等。●

半監(jiān)督學(xué)習(xí)是指在部分樣本帶

有標(biāo)簽而其他樣本沒有標(biāo)簽的

情況下進(jìn)行的學(xué)習(xí)過程。這種學(xué)習(xí)方法結(jié)合了有監(jiān)督學(xué)

習(xí)和無監(jiān)督學(xué)習(xí)的特點,旨在

利用少量的標(biāo)注數(shù)據(jù)和大量的

未標(biāo)注數(shù)據(jù)來改進(jìn)模型的性能。??

7.1機(jī)器學(xué)習(xí)基本概念

第七章

機(jī)器學(xué)習(xí)

6無監(jiān)督學(xué)習(xí)是指在沒有標(biāo)簽信

息的情況下對數(shù)據(jù)進(jìn)行建模和

分析的過程。在無監(jiān)督學(xué)習(xí)中,標(biāo)簽是模型

根據(jù)特征按某種規(guī)則歸納出來

的,聚類算法是典型的無監(jiān)督

學(xué)習(xí)算法。2.無監(jiān)督學(xué)習(xí)3.半監(jiān)督學(xué)習(xí)1.有監(jiān)督學(xué)習(xí)●●機(jī)器學(xué)習(xí)基本概念scikit-learn庫簡介及常用API線性回歸K

N

N

法邏輯回歸樸素貝葉斯分類器決策樹與隨機(jī)森林支持向量機(jī)算法關(guān)聯(lián)規(guī)則算法K-means算法7.1

●7.27.37.47.57.67.77.87.97

.

10○內(nèi)容導(dǎo)航CON

TEN

T

S●scikit-learn

是一個基于python

的機(jī)器學(xué)習(xí)庫,提供了簡單而高效的工具用于機(jī)器學(xué)習(xí)和

數(shù)據(jù)分析。它涵蓋了包括分類、回歸、聚類、降維、模型選擇和數(shù)據(jù)預(yù)處理在內(nèi)的多種機(jī)

器學(xué)習(xí)算法。●sklearn

庫是在Numpy

、Scipy

和matplotlib

的基礎(chǔ)上開發(fā)而成的,因此在安裝sklearn

前,

需要先安裝這些依賴庫。在安裝好依賴庫之后,可以使用pip

命令安裝scikit-learn庫:pip

install

scikit-learn?

7.2

scikit-learn

庫簡介及常用API

第七章

機(jī)器學(xué)習(xí)

8sklearn

庫共分為6大部分,分別用于完成分類任務(wù)、回歸任務(wù)、聚類任務(wù)、降維任務(wù)、模型選擇以及數(shù)據(jù)預(yù)處理。?7.2

scikit-learn

庫簡介及常用API

H

HH第七章機(jī)器學(xué)習(xí)

9●

7.2.1

scikit-learn庫

用API分類模型加載模塊最近鄰算法neighbors.NearestNeighbors支持向量機(jī)svm.SVC樸素貝葉斯naive_bayers.GussianNB決策樹tree.DecisionTreeClassifier集成方法ensemble.BaggingClassifier神經(jīng)網(wǎng)絡(luò)neural_network.MLPClassifier?

7.2

scikit-learn庫簡介及常用API

第七章

機(jī)器學(xué)習(xí)

10表1分類任務(wù)的常用API接口回歸模型加載模塊嶺回歸linear_model.RidgeLasso回歸linear_model.Lasso彈性網(wǎng)絡(luò)linear_model.ElasticNet最小角回歸linear_model.Lars貝葉斯回歸linear_model.BayesianRidge邏輯回歸linear_model.LogisticRegression多目標(biāo)回歸multioutput.MultiOutputRegressor?

7.2

scikit-learn庫簡介及常用API

第七章

機(jī)器學(xué)習(xí)

11表2回歸任務(wù)的常用API

接口回歸模型加載模塊K-meanscluster.KMeansA

P

類cluster.AffinityPropagation均值漂移聚類cluster.MeanShift層次聚類cluster.AgglomerativeClusteringDBSCANcluster.DBSCANBIRCHcluster.Birch譜聚類cluster.SpectralCoclustering?

7.2

scikit-learn庫簡介及常用API

第七章

機(jī)器學(xué)習(xí)

12表3聚類任務(wù)的常用API接口回歸模型加載模塊主成分分析decomposition.PCA截

S

V

D

L

S

Adecomposition.TruncatedSVD字典學(xué)習(xí)decomposition.DictionaryLearning因子分析decomposition.FactorAnalysis獨立成分分析decomposition.FastICA非負(fù)矩陣分解decomposition.NMFLDAdecomposition.LatentDirichletAllocation?

7.2

scikit-learn庫簡介及常用API

第七章

機(jī)器學(xué)習(xí)

13表4降維任務(wù)的常用API

接口數(shù)據(jù)集加載函數(shù)波士頓房價數(shù)據(jù)集load_boston鳶尾花數(shù)據(jù)集load_iris糖尿病數(shù)據(jù)集load_diabetes數(shù)字?jǐn)?shù)據(jù)集load_digitslinnerud物理鍛煉數(shù)據(jù)集load_linnerud葡萄酒數(shù)據(jù)集load_wine威斯康星州乳腺癌數(shù)據(jù)集load_breast_cancer?

7.2

scikit-learn庫簡介及常用API

第七章

機(jī)器學(xué)習(xí)

14表5

scikit-learn

庫內(nèi)置數(shù)據(jù)集●

7.2.2加載數(shù)據(jù)集案例實踐

●例7-1乳腺癌威斯康星診斷數(shù)據(jù)集(Wisconsin

Breast

Cancer

Dataset,WBCD)是機(jī)器學(xué)習(xí)領(lǐng)域常用的基準(zhǔn)數(shù)據(jù)集之一,用于研究乳腺癌的診斷問題。這個數(shù)據(jù)集最初

由美國威斯康星大學(xué)的研究者們收集整理,并于1990年代初首次公開使用。WBCD數(shù)據(jù)集包含了從乳房腫塊細(xì)胞樣本中提取的一系列特征,這些特征通過細(xì)針穿刺活檢

獲得,旨在幫助醫(yī)生判斷腫瘤是良性還是惡性。該數(shù)據(jù)集中的每個樣本代表一個病人

的腫瘤細(xì)胞核圖像分析結(jié)果,通常包括腫瘤平均半徑、平均平滑度、半徑標(biāo)準(zhǔn)差,面

積標(biāo)準(zhǔn)差等特征變量和結(jié)果變量

Diagnosis(即,診斷結(jié)果)。下面通過案例代碼加

載該數(shù)據(jù)集并顯示前5行和前5列數(shù)據(jù)。??

7.2

scikit-learn

庫簡介及常用API

第七章機(jī)器學(xué)習(xí)

15#將數(shù)據(jù)轉(zhuǎn)換為DataFrame格式,方便查看df

=pd.DataFrame(data=data.data,columns=data.feature

names)

#添加目標(biāo)列(即是否為惡性)df[target']=data.target#打印自變量(特征)print("輸出自變量(特征)和因變量(目標(biāo)):")#print(df.feature_names)print(df.columns)print()#打印數(shù)據(jù)集的前5行print("數(shù)據(jù)集的最后5行及部分列:")print(df.tail()['mean

radius'mean

texture''mean

perimeter','meanarea','target]])from

sklearn.datasets

importload

breast

cancerimport

pandas

as

pd#

數(shù)

據(jù)

集data=load

breast_cancer()#

數(shù)

據(jù)的

數(shù)

數(shù)num_rows,num_columns=data.data.shape#

打印

數(shù)

據(jù)的

數(shù)

數(shù)print(f"數(shù)擴(kuò)生的行數(shù):{num_rows}")print(f"數(shù)的列數(shù):{num_columns}")第七章

機(jī)器學(xué)習(xí)?7.2

scikit-learn庫簡介及常用API16?

7.2

scikit-learn

庫簡介及常用API

第七章機(jī)器學(xué)習(xí)

17這段代碼首先從sklearn.datasets

導(dǎo)入load_breast_cancer

函數(shù)并加載乳腺癌威斯康星診斷數(shù)據(jù)集,然后獲取并打印數(shù)據(jù)集的行信息和列信息。接著,將數(shù)據(jù)集轉(zhuǎn)換為

pandas

DataFrame格式,之后,打印數(shù)據(jù)集的特

征名稱和目標(biāo)名稱,最后打印數(shù)據(jù)集的前5行和前5列數(shù)據(jù),展示數(shù)據(jù)的結(jié)構(gòu)和內(nèi)容。數(shù)據(jù)集的行數(shù):569數(shù)據(jù)集的列數(shù):30輸出自變量(特征)和因變量(目標(biāo)):Index(['mean

radius','mean

texture','mean

perimeter','mean

area',

'mean

smoothness','mean

compactness','mean

concavity','meanconcavepoints','meansymmetry','meanfractaldimension','radius

error','texture

error','perimeter

error','area

error',

'smoothness

error','compactness

error','concavity

error','concavepointserror','symmetryerror','fractaldimensionerror',

'worst

radius','worst

texture','worst

perimeter','worst

area','worst

smoo

thness','worst

compactness','worst

concavity','worstconcavepoints','worstsymmetry','worstfractaldimension','target'],dtype='object')數(shù)據(jù)集的最后5行及部分列:mean

radius

mean

texture56421.5622.3956520.1328.25566

16.60

28.08

56720.6029.33568

7.7624.54mean

perimeter142.00

131.20

108.30

140.1047.92area1261.0

858.1

1265.0

181.0target00mean7.2scikit-learn庫簡介及常用API7.3線性回歸7.47.57.67.77.8K

N

N

法邏輯回歸樸素貝葉斯分類器決策樹與隨機(jī)森林支持向量機(jī)算法7.9關(guān)聯(lián)規(guī)則算法7.10○K-means算法內(nèi)容導(dǎo)航CON

TEN

T

S7.1

●機(jī)器學(xué)習(xí)基本概念回歸分析是一種研究因變量y

(或稱結(jié)果變量、被輸出變量、相應(yīng)變量)與自變量X(或稱解釋量、獨立變量、輸入變量)之間關(guān)系的數(shù)據(jù)分析方法,目的

在于建立數(shù)學(xué)模型以便通過自變量來預(yù)測因變量。如果這個模型是線性的,即因

變量可以表示為自變量的加權(quán)和,則稱為線性回歸模型。例如,用患者的年齡、

性別、體重、血壓等特征來預(yù)測患者未來的血糖水平。只有一個自變量的情況稱為簡單回歸,大于一個自變量情況的叫做多元回歸(Multivariable

LinearRegression)。??

7.3線性回歸

第七章機(jī)器學(xué)習(xí)

19●

7.3.1線性回歸的基本原理如果兩個變量之間的關(guān)系可以用一元一次方程y=bx+a

表示(即在圖像上呈

現(xiàn)出來的是一條直線),那么這兩個變量之間就是線性相關(guān)的。構(gòu)建基于這種關(guān)系

的數(shù)學(xué)模型就是線性回歸模型。一旦建立

了這樣的模型,給定一個變量x,就可以

預(yù)測另一個變量y

的值,我們將y的預(yù)測值標(biāo)記為?,其其

,x

為自變量;y

為因

量;

為給定x

y

的估計值;a為截距;b

回歸系數(shù)。在圖中,叉號表示真實數(shù)據(jù),直線y=

bx

+a為基于真實數(shù)據(jù)訓(xùn)練得到線性回歸方

程,將自

量x代入方程即可得到y(tǒng);

的預(yù)測值;

(線上的圓圈),預(yù)測值和真實值之間的

差值被稱為殘差,如下所示:ε=yi-

ia歸方程表示如下:b性線性回歸方程示意圖XX??

7.3線性回歸

第七章

機(jī)器學(xué)習(xí)

20為了評估這條直線對整個數(shù)據(jù)

集的擬合程度,我們計算所有

殘差的平方和,也就是所謂的“殘差平方和”(Residual

SumofSquares,RSS):RSS=

:=1(yi

)2以上計算預(yù)測值和真實值總體

殘差的函數(shù)就被稱為損失函數(shù)。因此,RSS就是線性回歸的一個損失函數(shù)。這個損失函

數(shù)越小,預(yù)測結(jié)果與真實值之

間的誤差就越小,預(yù)測就越精

確。在構(gòu)建線性回歸模型時,我們

的目標(biāo)是通過反復(fù)迭代訓(xùn)練模型來調(diào)整參數(shù)a

b

的值,找到能最小化

RSS的最佳擬合直

線。對于線性模型來講,最常用的

損失函數(shù)是均方誤差(MeanSquaredError,MSE),也

是對

n

個樣本的殘差平方和上

求得平均值:決定系數(shù)(coefficient

ofdetermination,R2)是另一項對線性回歸模型評估的重要指標(biāo),其值最大為1,最小為0,

當(dāng)值越接近于1,則說明回歸方程的擬合程度越好;值越接

近于0,則說明回歸方程的擬

合程度越差。決定系數(shù)的計算

公式:??線性回歸

第七章機(jī)器學(xué)習(xí)

21●以上僅介紹了只有一個自變量x的一元一次線性回歸方程及其損失函數(shù),真實世界中更多的是多元線性回歸方程,如下所示:=+bo+b?x?+b?x?……+bnxn??

7.3線性回歸

第七章

機(jī)器學(xué)習(xí)

22●

7.3.2線性回歸案例實踐●例7-2研究男青年前臂長和身高關(guān)系,從男青年中隨機(jī)抽

取11名人員分別測量其身高和前臂長,測量結(jié)果如下表所

示,試計算身高(x)

與前臂長(y)

之間的線性回歸方程。??7

.3線性回歸

第七章

機(jī)器學(xué)習(xí)23編號身高(x)前臂長(y)11704721734231604441554151734761885071784781834691804910165431116633??

7.3線性回歸第七章

機(jī)器學(xué)習(xí)

24import

matplotlib.pyplot

as

pltimport

numpy

as

npx=[155,160,165,166,170,173,173,178,180,183,188]##輸入身高數(shù)據(jù)y=[41,44,43,44,47,42,47,47,49,46,50]##輸入前臂長數(shù)據(jù)X=np.array(x)y=np.array(y)##將數(shù)據(jù)轉(zhuǎn)換為NumPy

數(shù)

組fig=plt.figure()##使用散點圖查看數(shù)據(jù)分布,查看是否存

在線性關(guān)系plt.scatter(x,y)plt.xlabel('Height

(cm)')plt.ylabel('ForearmLength

(cm)')plt.title('Scatt

erplot

of

Height

vs

Forearm

Length')linreg=LinearRegression()###擬合線性回歸模型linreg.fit(x.reshape(-1,1),y)y_hat

=linreg.predict(x.reshape(-1,1))print(線型模型的系數(shù)(a):{}.format(linreg.coef_)##輸出結(jié)果

print(線型模型的常數(shù)項(b):{:.3f}'.format(ercept_))

#計算決定系數(shù)R2r_squared

=linreg.score(x.reshape(-1,1),y)print('決定系數(shù)R2:{:.3f}'.format(r_squared))??

7.3線性回歸

第七章機(jī)器學(xué)習(xí)

25#在散點圖上繪制回歸直線#創(chuàng)建散點圖plt.figure()plt.scatter(x,y,color='blue',label='Data')#散點圖#在圖上繪制回歸直線plt.plot(x,y_hat,color='red',label='Regression

Line')

#添加標(biāo)簽和標(biāo)題plt.xlabel('Height(cm)')plt.ylabel('Forearm

Length(cm)')plt.title('Scatter

plot

of

Height

vs

Forearm

Length

withRegression

Line')plt.legend()#

添加圖例plt.show()#顯示圖形這段代碼輸入了男青年前臂長和身高的數(shù)據(jù),使用散點圖查看了數(shù)據(jù)分布,如圖7-3所示,確定數(shù)據(jù)之間

存在線性關(guān)系。隨后,根據(jù)數(shù)據(jù)擬合了一個線性回歸

模型,并且輸出回歸模型的系數(shù)以及常數(shù)項,最后,

在散點圖上可視化了線性回歸方程,如圖所示。??

7.3線性回歸

第七章

機(jī)器學(xué)習(xí)

26由圖可知,線型回歸模型的系數(shù)(a):[0.23024523],線型模型的常數(shù)項(b):5.873,

決定系數(shù)R2為

0.641,最終得到線性回歸方程:=5.873+

0.23x。??

7.3線性回歸

第七章機(jī)器學(xué)習(xí)

27Scatter

plot

of

Height

vs

Forearm

Length

with

Regression

Line線型模型的系數(shù)(a):[0.23024523]

線型模型的常數(shù)項(b):5.873決定系數(shù)

R2:0.641模型結(jié)果圖身高與前臂長散點圖線性回歸方程圖Foream

Length

(cm)7.1●

機(jī)器學(xué)習(xí)基本概念7.2

scikit-learn

庫簡介及常用API7.3

線性回歸7.4KNN

算法7.5

邏輯回歸7.6

樸素貝葉斯分類器7.7

決策樹與隨機(jī)森林7.8

支持向量機(jī)算法7.9

關(guān)聯(lián)規(guī)則算法7.10

K-means

算法內(nèi)容導(dǎo)航CON

TEN

T

SK

鄰(KNearestNeighbors,KNN)

算法是一種常見的監(jiān)督學(xué)習(xí)方法,

一般多用于分類任務(wù),也可用來處理回歸任務(wù)。下面詳細(xì)介紹KNN

算法的基本原理以及案例實踐。KNN

算法的核心思想是:在特征空間中,如果一個樣本的大部分近鄰都屬于某個類別,則該樣本也屬于這個類別。當(dāng)KNN

用于分類任務(wù)時一般采用“投票法”進(jìn)行預(yù)測,即k

鄰居中出現(xiàn)最多的類別作為預(yù)測結(jié)果。??

7.4KNN算法

第七章機(jī)器學(xué)習(xí)

29●

7.4.1KNN算法原理KNN

算法中

K

的選擇是非常關(guān)鍵的一個環(huán)節(jié)。假設(shè)圖7-6中的綠色正方形是我們要進(jìn)行預(yù)測的樣本。當(dāng)

k=3

,KNN

算法會根據(jù)距離計算出距離預(yù)測樣本最近的3個鄰居。在這3個鄰居中,

藍(lán)色三角形的數(shù)量最多。因此,根據(jù)“投票法”,KNN

算法會將該樣本預(yù)測為藍(lán)色三角形。??7.4KNN算法

第七章

機(jī)器學(xué)習(xí)30然而,當(dāng)k=5

時,即考慮距離預(yù)測樣本最近的5個鄰居時,結(jié)果與之前并不相同,此時會將樣本

預(yù)測為橙色圓形。對于

n

個樣本的數(shù)據(jù)集而言,k

的取值一般不超過√n,通常在20以內(nèi)。在實

際應(yīng)用中,可通過交叉驗證的方式,從最小的k

值不斷增加,計算不同k

值下的結(jié)果,從而選出

最佳k值,后續(xù)章節(jié)會詳細(xì)介紹交叉驗證相關(guān)知識。?7.4KNN算法第七章機(jī)器學(xué)習(xí)31??

7.4

KNN算法

第七章

機(jī)器學(xué)習(xí)

32計算量較大,對特征值敏感,以及需要選擇合適的k

值和距離度量方

法。簡單易懂,無需參數(shù)估計,以及適合多分類問題,具有廣泛的適用性?!?/p>

7.4.2

KNN算法案例實踐例7-3本案例采用Pima

印第安人糖尿病數(shù)據(jù)集。

Pima

Indians

糖尿病數(shù)據(jù)集來源于

美國國家糖尿病、消化和腎臟疾病研究所,包含了來自美國亞利桑那州皮馬印第安人

女性的醫(yī)療記錄數(shù)據(jù)。該數(shù)據(jù)集含

768條記錄,8個數(shù)值型特征和1個目標(biāo)變量。8

個數(shù)值型特征分別為懷孕次數(shù)(Pregnancies)、血糖(Glucose)、舒張壓(BloodPressure)

、三頭肌皮褶厚度(SkinThickness)

、胰島素水平(Insulin)、BMI、

糖尿病遺傳系數(shù)(DiabetesPedigreeFunction)

和年齡(Age),目標(biāo)變量outcome

為二分類變量(1表示患病,0表示未患病)。下面,我們使用KNN

算法來

構(gòu)建糖尿病預(yù)測模型,其目的是構(gòu)建分類模型來預(yù)測患者五年內(nèi)是否會發(fā)展成糖尿病。?7.4KNN算法

第七章

機(jī)器學(xué)習(xí)33importnumpy

as

npimportpandas

as

pdimport

matplotlib.pyplot

as

pltfrom

sklearn.model_selection

import

train

est_splitfromsklearn.neighborsimportKNeighborsClassifierfrom

sklearn.metrics

import

accuracy_scoredata=pd.read_csv("data.csv",encoding="utf-8")###數(shù)據(jù)

讀入X=data.iloc[:,0:8]###

獲取特征數(shù)據(jù)y=data.iloc[:,-1]##

獲取標(biāo)簽數(shù)據(jù)#數(shù)據(jù)集分割為訓(xùn)練集和測試集X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)#劃分?jǐn)?shù)據(jù)集為80%的訓(xùn)練集和20%的測試集#初始化

KNN

分類器并訓(xùn)練(使用8個特征)knn=KNeighborsClassifier(n_neighbors=8)#

創(chuàng)建一個

KNN

分類

器對象,設(shè)置鄰居數(shù)為8knn.fit(X_train,y_train)#使用訓(xùn)練集數(shù)據(jù)訓(xùn)練KNN

分類器#使用測試集進(jìn)行預(yù)測y_pred=knn.predict(X_test)#

使用訓(xùn)練好的KNN

分類器對測試集

進(jìn)行預(yù)測forx

in

zip(y_test,y_pred):#成對輸出真實值和預(yù)測值print(x,end="")print('nKNN分類的準(zhǔn)確率為:{}.format(accuracy_score(y_test,

y_pred)))##輸出KNN分類預(yù)測的準(zhǔn)確率:??

7.4

KNN算法

第七章機(jī)器學(xué)習(xí)3435(0,0)(0,0)(0,0)(0,0)(0,0)(0,1)(0,0)(0,0)(0,1)(0,1)(1,0)(0,1)(1,0)(0,0)(0,0)(1,1)(0,0)(0,0)(0,0)(0,1)(1,1)(0,0)(0,0)(1,0)(0,0)(1,1)(1,1)(1,1)(1,1)(0,0)(1,0)(1,1)(1,0)(0,0)(1,1)(0,0)(1,0)(0,0)(0,0)(0,1)(0,0)(1,1)(1,1)(1,0)(0,0)(0,0)(0,1)(0,0)(0,0)(1,1)(1,1)(0,0)(0,0)(1,0)(1,1)(0,0)(0,0)(0,0)(1,0)(0,0)(0,1)(0,0)(0,0)(0,0)(0,0)(1,1)(1,0)(0,0)(0,0)(0,0)(1,1)(1,1)(0,0)(1,1)(0,1)(0,0)(0,1)(0,0)(1,1)(0,0)(0,0)(0,0)(1,0)(0,0)(1,1)(0,0)(0,0)(1,1)(1,0)(1,1)(0,0)(1,1)(0,0)(0,0)(0,0)(0,0)(0,0)(1,0)(0,0)(0,0)(0,1)(1,0)(1,1)(1,1)(0,1)(1,1)(1,0)(0,0)(1,1)(0,0)(0,0)(0,0)(0,0)(0,1)(0,0)(0,0)(1,0)(0,0)(0,0)(1,1)(0,0)(0,0)(1,0)(0,0)

KNN分類的準(zhǔn)確率為:0.7467532467532467(1,1)(1,0)(0,0)(0,0)(0,0)(0,1)(0,1)(1,1)(0,0)(1,0)(0,0)(0,1)(0,0)(1,1)(0,0)(1,0)(0,0)(0,0)(0,0)(0,0)(0,0)(0,1)(0,0)(1,1)(0,1)(1,1)(1,1)(0,0)(1,0)(1,1)代碼運行結(jié)果這段代碼加載了皮馬印第安人糖尿病數(shù)據(jù)集,按照8:2的比例劃分訓(xùn)練集和測試集。

隨后,它初始化了一個

K=7

的KNN

分類器,并使用訓(xùn)練集執(zhí)行分類器訓(xùn)練。最后,

它對測試集進(jìn)行預(yù)測并輸出分類預(yù)測的準(zhǔn)確率。??

7.4

KNN算法第七章機(jī)器學(xué)習(xí)7.1●

機(jī)器學(xué)習(xí)基本概念7.2

scikit-learn

庫簡介及常用API7.3

線性回歸7.4

KNN

算法7.5

邏輯回歸7.6

樸素貝葉斯分類器7.7

決策樹與隨機(jī)森林7.8

支持向量機(jī)算法7.9

關(guān)聯(lián)規(guī)則算法7.10

K-means

算法內(nèi)容導(dǎo)航CON

TEN

T

S核心思想:邏輯回歸是一種經(jīng)典的分類算法,用于預(yù)測某一事件發(fā)生的概率,特別適用于二元分類問題。醫(yī)學(xué)領(lǐng)域應(yīng)用:●疾病預(yù)測與診斷:判斷患者是否患有某種疾病(如糖尿病、癌癥)?!裼绊懸蛩胤治觯鹤R別與疾病相關(guān)的危險因素(如年齡、BMI)

或保護(hù)因素(如健康飲食)特

:●

模型簡單,易于解釋,計算效率高?!?/p>

輸出結(jié)果為0到1之間的概率值,直觀易懂。??

7.5邏輯回歸

第七章機(jī)器學(xué)習(xí)

371.

線性模型的問題●

線性回歸z=βo+β?X?+...+β□x□的輸出是連續(xù)值,無法直接用于分類。2.

引入Sigmoid函數(shù)●

為了將連續(xù)值映射到(0,1)的概率區(qū)間,邏輯回歸使用Sigmoid函數(shù)。●

:f(z)=1/(1+e?2)3.

邏輯回歸模型●

將線性輸出

z

代入Sigmoid函數(shù),得到概率P?!馪>0.5,則預(yù)測為正類(1);P≤0.5,則預(yù)測為負(fù)類(0)Sigmoid

Function—Sigmoid

function1.0

---Th

r

oPl

(i

t.

)0.80.6-0.5-0.4-0.20.02.5

5.07.5

10.0ohesZre??

7.5邏輯回歸

第七章機(jī)器學(xué)習(xí)

38基本原理import

pandas

as

pdfrom

sklearn.model_selection

import

train_test_split#訓(xùn)練集測試集劃分from

sklearn.linear_model

import

LogisticRegression#導(dǎo)入邏輯回歸模型data=pd.read_csv("diabetes.csv")#劃分自變量和結(jié)果變量X=data[["Pregnancies","Glucose","BloodPressure","SkinThickness","Insulin","BMI","DiabetesPedigreeFunction","Age"]]Y=data[["Outcome"]]#劃分?jǐn)?shù)據(jù)集X_train,X_test,y_train,y_test=train_test_split(X,Y,test_size=0.2)#測試集占總樣本20%??

7.5邏輯回歸

第七章

機(jī)器學(xué)習(xí)

39邏輯回歸算法案例實踐第一步,數(shù)據(jù)準(zhǔn)備,導(dǎo)入數(shù)據(jù)集,并將其劃分為訓(xùn)練集和測試集。log_reg=LogisticRegression()#用邏輯回歸處理二分類問題第三步,模型訓(xùn)練,調(diào)用sklearn

中的

fit

函數(shù)實現(xiàn)log_reg.fit(X_train,y_train)#擬合分類器第二步,模型初始化(初始化邏輯回歸模型)和模型訓(xùn)練??

7.5邏輯回歸邏輯回歸算法案例實踐第四步模型預(yù)測和性能評估clf_y_predict

=log_reg.predict(X_test)print(clf_y_predict)scorce=log_reg.score(X_test,y_test)scorce_1

=log_reg.score(X_train,y_train)

print(測試集的評分:',scorce)print('訓(xùn)練集的評分',scorce_1)[0011001001000001100110101000000000011001001000110001000010010001110100010000001100100000001000001000110010000101101000000000011101000011111000100000001010]測試集的評分:0.7532467532467533訓(xùn)練集的評分0.7801302931596091第七章機(jī)器學(xué)習(xí)

40第五步查看預(yù)測概率值和對應(yīng)類別clf_y_predict

=log_reg.predict(X_test)print(clf_y_predict)scorce

=log_reg.score(X_test,y_test)scorce_1

=log_reg.score(X_train,y_train)

print(測試集的評分:'scorce)print('訓(xùn)練集的評分'scorce_1)[0.892038930.10796107]0

[0.395352820.60464718]1[0.082474740.91752526]1

[0.696274020.30372598]0[0.757792370.24220763]0??

7.5邏輯回歸

第七章機(jī)器學(xué)習(xí)

41邏輯回歸算法案例實踐第五步最終輸出結(jié)果如下:7.1●

機(jī)器學(xué)習(xí)基本概念7.2

scikit-learn

庫簡介及常用API7.3

線性回歸7.4

KNN

算法7.5

邏輯回歸7.6

樸素貝葉斯分類器7.7

決策樹與隨機(jī)森林7.8

支持向量機(jī)算法7.9●

關(guān)聯(lián)規(guī)則算法7.10

K-means

算法內(nèi)容導(dǎo)航CON

TEN

T

S核心思想

:基于貝葉斯定理和特征條件獨立假設(shè)的一種簡易概率分類器?!皹闼?Naive)”

的含義:●

它假設(shè)所有特征之間是相互獨立的,互不影響。●這是一個很強(qiáng)的假設(shè),現(xiàn)實中往往不成立,但模型在很多情況下依然表現(xiàn)出色。優(yōu)

:●

模型簡單,易于解釋,計算效率高?!?/p>

輸出結(jié)果為0到1之間的概率值,直觀易懂。?

?

7.6樸素貝葉斯分類器

第七章機(jī)器學(xué)習(xí)

43基本原理1.

標(biāo)

:對于給定的樣本X,

計算它屬于每個類別C□

的后驗概率P(C□X),并選擇概率最大的類別。2.

貝葉斯定理:P(C□|X)=(P(X|C□)*P(C□))/P(X)3.

利用“樸素”假設(shè)進(jìn)行簡化:P(X|C□)=P(x?|C□)*P(x?|C□)*.….*P(x□|C□)4.

最終分類模型:?=argmax_{C□}P(C□)*πP(x□|C口)(尋找能使“先驗概率”與“條件概率連乘積”最大的那個類別)??

7.6樸素貝葉斯

第七章機(jī)器學(xué)習(xí)

44樸素貝葉斯分類器案例實踐第一步,加載數(shù)據(jù)集,并將其劃分為訓(xùn)練集和測試集:importpandas

as

pdimport

numpyas

npfrom

sklearn.metrics

import

accuracy_score,classification_reportfrom

sklearn.model_selection

import

train_test_split

#

劃分訓(xùn)練集與測試集的

函數(shù)fromsklearn.naive_bayesimportGaussianNB#

導(dǎo)入高斯樸素貝葉斯模型data=pd.read_csv("diabetes.csv")#加載數(shù)據(jù)集diabetes.csvX=data[["Pregnancies","Glucose","BloodPressure","SkinThickness","Insulin","BMI","DiabetesPedigreeFunction","Age"]]#

加載自變量X和因變量YY=data[["Outcome"]]Y=np.ravel(Y)#

將多維數(shù)組展平為一維數(shù)組X_train,X_test,y_train,y_test=train_test_split(X,Y,test_size=0.2)#按8:2劃分訓(xùn)練集和測試集?

7.6樸素貝葉斯

第七章

機(jī)器學(xué)習(xí)

45nb=GaussianNB()#各特征變量均為連續(xù)值,適用高斯樸素貝葉斯算法第三步,模型訓(xùn)練nb.fit(X_train,y_train)#

擬合分類器(訓(xùn)練模型)第二步,模型初始化y_pred_nb=nb.predict(X_test)#

預(yù)測測試集樣本類別print("GaussianNB

Accuracy:",accuracy_score(y_test,y_pred_nb))#輸出準(zhǔn)確率print("GaussianNB

Classification

Report:\n",classification_report(y_test,

y_pred_nb))#輸出分類報告??

7.6樸素貝葉斯樸素貝葉斯分類器案例實踐第四步,樣本預(yù)測及模型評估GaussianNB

Accuracy:0.7272727272727273GaussianNB

Classification

Report:precision

recall

f1-score

support01accuracymacro

avg

weightedavg0.76

0.660.71

0.720.84

0.540.69

0.730.79

0.600.73

0.70

0.729757154154154第七章機(jī)器學(xué)習(xí)

467.1●

機(jī)器學(xué)習(xí)基本概念7.2

scikit-learn

庫簡介及常用API7.3

線性回歸7.4

KNN

算法7.5

邏輯回歸7.6

樸素貝葉斯分類器7.7

決策樹與隨機(jī)森林7.8

支持向量機(jī)算法7.9●關(guān)聯(lián)規(guī)則算法7.10

K-means

算法內(nèi)容導(dǎo)航CON

TEN

T

S核心思想:構(gòu)建一個樹形結(jié)構(gòu)的決策圖,每個內(nèi)部節(jié)

點代表一個特征判斷,每個分支代表一個

判斷結(jié)果,每個葉節(jié)點代表一個最終決策

(

)

。優(yōu)

:●

可解釋性強(qiáng):決策過程直觀,符合人

類思維,是“白盒”模型?!?/p>

應(yīng)用廣泛:在醫(yī)療領(lǐng)域常用于輔助診

斷和病情評估。根節(jié)點23456葉子節(jié)點

葉子節(jié)點

葉子節(jié)點隨機(jī)森林核心思想

:集成學(xué)習(xí)(EnsembleLearning)的一種。它構(gòu)建多棵決策樹,并將它們的結(jié)果進(jìn)行綜合,以獲得比單一決策樹更好的預(yù)測性能。工

:●隨機(jī)采樣:從原始數(shù)據(jù)中隨機(jī)抽取樣本和特征,構(gòu)建多棵不同的決策樹?!窦w決策:對于一個新樣本,每棵樹都進(jìn)行一次預(yù)測(投票)?!褡罱K結(jié)果:采用“少數(shù)服從多數(shù)”的原則,得票最多的類別即為最終預(yù)測結(jié)果。優(yōu)

點:●高準(zhǔn)確率:通常比單棵決策樹性能更好?!窨惯^擬合:集成多個模型可以有效降低過擬合風(fēng)險。●特征重要性評估:能夠評估每個特征對預(yù)測的貢獻(xiàn)度??

7.7決策樹與隨機(jī)森林

第七章機(jī)器學(xué)習(xí)

49根節(jié)點:年齡>21歲?否->預(yù)測“未患病”是-

>進(jìn)入下一節(jié)點內(nèi)部節(jié)點:

BMI>32?否->預(yù)測“未患病”是-

>進(jìn)入下一節(jié)點..

以此類推,直到葉節(jié)點給出最終預(yù)測。年齡>21歲?否

是預(yù)測未患病

BMI>32.0?否

是預(yù)測未患病

收縮壓>134mmHg?否

是預(yù)則未患病預(yù)測患病??

7.7決策樹與隨機(jī)森林

第七章

機(jī)器學(xué)習(xí)

50糖尿病診斷決策樹基本原理1.

標(biāo)

:對于給定的樣本X,

計算它屬于每個類別C□

的后驗概率P(C□X),并選擇概率最大的類別。2.

貝葉斯定理:P(C□|X)=(P(X|C□)*P(C□))/P(X)3.

利用“樸素”假設(shè)進(jìn)行簡化:P(X|C□)=P(x?|C□)*P(x?|C□)*.….*P(x□|C□)4.

最終分類模型:?=argmax_{C□}P(C□)*πP(x□|C口)(尋找能使“先驗概率”與“條件概率連乘積”最大的那個類別)??

7.7決策樹與隨機(jī)森林

第七章機(jī)器學(xué)習(xí)

51例7-6使用例7-3中的PimaIndians糖尿病數(shù)據(jù)集,分別基于決策樹與隨機(jī)森林算法構(gòu)建糖尿病預(yù)測模型。代碼如下:#導(dǎo)入所需的庫和模塊importnumpyasnpimportpandasas

pd#導(dǎo)入

pandas庫importmatplotlib.pyplotasplt#導(dǎo)入用于繪圖的Matplotlib庫fromsklearn.model_selectionimporttrain_test_split#導(dǎo)入劃分訓(xùn)練集和測試集

的庫fromsklearn.treeimportDecisionTreeClassifier#導(dǎo)入決策樹分類器fromsklearnimporttree

#

導(dǎo)入

tree

模塊fromsklearn.ensembleimportRandomForestClassifier#導(dǎo)入隨機(jī)森林分類器

fromsklearn.metricsimportaccuracy_score#

導(dǎo)入用于計算預(yù)測準(zhǔn)確性的庫y=data[["Outcome"]#

設(shè)置目標(biāo)變量#按8:2劃分訓(xùn)練集和測試集X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,

random_state=42)??

7.7決策樹與隨機(jī)森林

第七章機(jī)器學(xué)習(xí)

52data=pd.read_csv("diabetes.csv")#

加載本地數(shù)據(jù)集column_names=["Pregnancies","Glucose","BloodPressure',"SkinThickness","Insulin","BMI',"DiabetesPedigreeFunction","Age"]X=data[column_names]#

設(shè)置特征變量決策樹與隨機(jī)森林案例實踐第1步,數(shù)據(jù)加載和訓(xùn)練集/測試集劃分第4步,可視化決策樹plt.figure(figsize=(19,7))#設(shè)置圖形參數(shù)#繪制決策樹tree.plot_tree(dt_classifier,feature_names=column_names,class_names=['No

Diabetes','Diabetes'],filled=True,rounded=True,fontsize=12)plttitle('DecisionTreeforPimaIndianDiabetesDataset)#

添加圖標(biāo)題pltshow()#初始化決策樹分類器dt_classifier=DecisionTreeClassifier(max_depth=3,random_state=42)

#訓(xùn)練決策樹模型dt_classifier.fit(X_train,y_train)第3步,模型評估y_pred_dt=dt_classifier.predict(X_test)#

使用測試集進(jìn)行預(yù)測accuracy_dt=accuracy_score(y_test,y_pred_dt)#

計算準(zhǔn)確率print(f"DecisionTreeAccuracy:{accuracy_dt:.2f}")#打印決策樹的準(zhǔn)確率??

7.7決策樹與隨機(jī)森林

第七章機(jī)器學(xué)習(xí)

53決策樹與隨機(jī)森林案例實踐第2步,模型訓(xùn)練決策樹與隨機(jī)森林案例實踐DecisionTreeforPima

Indian

Diabetes

DatasetGl

ci

i

1

4.5v

l

7188]class=No

Diabetes349s=53emuaas55nogu

MinIi

2458.

5class-DiabetesDiabetesPedigreeFunction<=1.428class-DiabetesgBGlucose<=127.5samples=238class-No

Diabetes

Min

2468.

50=gBs

i

i

le

3

sa

=.value-[40.3]

value【89.84]1735lei=pn43mnagclassNoDiabeteslclass=No

Diabetes

class=NoDiabetes

class-No

DiabetesAge<=28.5class=No

Diabetesgini=0.469class=No

Diabetesgini=0.0

samples=4class-Diabetesgini=0.14class-Diabetesgini=0.247class=Diabetesgini=0.476v

al

s28,1=84]6epumasgini=0.48samples

5value=[2.3]

class-Diabetesgini=0.117samples-192samples=216value=[129.87]class

-No

Diabetesvalue

=[208,30]value=[180,12】gini=0.383samples=454value=[337.117]samples=83value=[12,711gini=0.178samples

=71value=[7,64]samples-12value=[5,71samples=

66value-15,61]samples=8value=[5,3]第3步,可視化隨機(jī)森林的特征重要性importances

=rf_classifier.feature_importances_indices=np.argsort(importances)[::-1]plt.figure(figsize=(10,5))plt.title("Feature

importances")plt.bar(range(X.shape[1]),importances[indices],align="center")plt.xticks(range(X.shape[1]),X.columns[indices],rotation=90)plt.xlim([-1,X.shape[1]])y_pred_rf

=rf_classifier.predict(X_test)#使用測試集進(jìn)行預(yù)測accuracy_rf

=accuracy_score(y_test,y_pred_rf)#

計算準(zhǔn)確率print(f"RandomForestAccuracy:{accuracy_rf:.2f}")#打印隨機(jī)森林的準(zhǔn)確率#初始化隨機(jī)森林分類器rf_classifier=RandomForestClassifier(n_estimators=100,random_state=42)

rf_classifier.fit(X_train,y_train)#訓(xùn)練隨機(jī)森林模型??

7.7決策樹與隨機(jī)森林

第七章機(jī)器學(xué)習(xí)決策樹與隨機(jī)森林案例實踐二

、隨機(jī)森林示例第1步,訓(xùn)練隨機(jī)森林模型55第2步,模型性能評估0.250.200.150.100.05決策樹與隨機(jī)森林案例實踐Feature

importances??

7.7決策樹與隨機(jī)森林

第七章機(jī)器學(xué)習(xí)

56skinThicknessBoodPressureegnanciesDiabetesPdigreFunctionGluco5e0.00Age-7.1

機(jī)器學(xué)習(xí)基本概念7.2

scikit-learn

庫簡介及常用API7.3

線性回歸7.4

KNN

算法

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論