《Python醫(yī)學數(shù)據(jù)分析》課件 第9章 綜合案例_第1頁
《Python醫(yī)學數(shù)據(jù)分析》課件 第9章 綜合案例_第2頁
《Python醫(yī)學數(shù)據(jù)分析》課件 第9章 綜合案例_第3頁
《Python醫(yī)學數(shù)據(jù)分析》課件 第9章 綜合案例_第4頁
《Python醫(yī)學數(shù)據(jù)分析》課件 第9章 綜合案例_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第九章

綜合案例案例準備案例步驟本章小結(jié)內(nèi)容導(dǎo)航CON

TEN

T

S9.19.29.1.1

案例任務(wù)●學習如何加載外部數(shù)據(jù)集。●分析糖尿病相關(guān)影響因素?!駱?gòu)建并優(yōu)化糖尿病預(yù)測模型。●理解數(shù)據(jù)預(yù)處理、模型訓練、評估和預(yù)測的基本流程。??

9.1

案例準備

9

3o

02

numpy支持高性能的多維數(shù)組計算,

是科學計算的基礎(chǔ)庫,提供

數(shù)學運算和線性代數(shù)功能?!?4

sklearnpandas

01

0提供高效的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,主要用于數(shù)據(jù)處

理和操作。matplotlib

03??

9.1

案例準備

9

4提供各種機器學習算法和工具,

用于數(shù)據(jù)挖掘和數(shù)據(jù)分析,涵蓋

分類、回歸、聚類等任務(wù)。用于創(chuàng)建靜態(tài)、動態(tài)和交互式可視化圖表,是Python中最常用的繪圖庫。PregnanciesGlucoseBloodPressureSkinThicknessInsulinBMIDiabetesPedigreeFunctionAgeOutcome61487235033.60.627501工856629026.60.3513108183640023.30.67232118966239428.10.1672100137403516843.12.288335116740025.60.201300378503288310.2482611011500035.30.1342902197704554330.50.158538125960000.232544110920037.60.191300101687400380.53734110139800027.11.4415701189602384630.10.3985915166721917525.80.587517100000300.484320118844723045.80.551317107740029.60.25431工10330388343.30.183330工11570309634.60.5293213126884123539.30.704270899840035.40.3885007196900039.80.451411911980350290.26329111143943314636.60.2545110125702611531.10.205417147760039.40.257431●

Pregnancies:懷孕次數(shù)●

Glucose:

血漿葡萄糖濃度●

BloodPressure:

舒張壓●

SkinThickness:

肱三頭肌皮膚褶皺厚度●

Insulin:

兩小時胰島素含量●

BMI:

身體質(zhì)量指數(shù),即體重除以身高的平方●

DiabetesPedigreeFunction:糖尿病血統(tǒng)指數(shù),

即家族遺傳指數(shù)●

Age:年齡??

9.1

案例準備

第9章綜合案例

5本次案例使用的是

“diabetes.csv”數(shù)據(jù)集,該數(shù)據(jù)集包含的樣本總數(shù)為768,特征數(shù)為8,標簽數(shù)為2。其中標

簽為0表示沒有糖尿病,1表示患有糖尿病。數(shù)據(jù)集??

9.1

案例準備

第9章綜合案例

69.1.4案例目的●糖尿病數(shù)據(jù)分析的目標在于深入挖掘數(shù)據(jù)集以揭示糖尿病的患病規(guī)律和影響因素。●通過讀取和清洗數(shù)據(jù),進行描述性統(tǒng)計分析,利用柱狀圖展示各屬性數(shù)據(jù)分布,

并通過餅圖或堆疊條形圖觀察糖尿病標簽的分布;●對特征進行標準化處理,并通過相關(guān)性分析篩選出關(guān)鍵特征;●將數(shù)據(jù)集劃分為訓練集和測試集,構(gòu)建邏輯回歸模型進行訓練,并計算變量OR

以評估特征影響;●在測試集上全面評估模型性能,通過對比隨機選取樣本的真實值與預(yù)測值,來驗

證模型的預(yù)測能力,并分析各特征的作用,以期為糖尿病的預(yù)防、診斷和治療提

供數(shù)據(jù)支持和策略建議。內(nèi)容導(dǎo)航CON

TEN

T

S

9.2

案例步驟本章小結(jié)案例準備?

9.2案例步驟第

9

例81.從本地加載糖尿病數(shù)據(jù)集2.查看糖尿病數(shù)據(jù)結(jié)構(gòu)3.數(shù)據(jù)處理4.使用邏輯回歸模型分析糖尿病

風險因素并構(gòu)建糖尿病預(yù)測模

型5.訓練模型并評估其性能每個步驟的工具庫使用情況與知識儲備案例步驟工具庫知識儲備本地數(shù)據(jù)集加載pandas了解如何使用pandas的read_csv函數(shù)加載數(shù)據(jù);理解數(shù)據(jù)幀(DataFrame)的基本概念描述性統(tǒng)計分析pandas、matplotlib了解如何使用matplotlib繪制柱狀圖和條形圖;理解如何

設(shè)置圖表的標題、軸標簽和布局;熟悉pandas的value_counts方法用于統(tǒng)計頻數(shù)。數(shù)據(jù)處理pandas、numpy、

sklearn了解異常值處理的基本方法,如替換和刪除;理解數(shù)據(jù)

標準化的概念和重要性;熟悉如何使用StandardScaler

進行數(shù)據(jù)標準化;了解如何使用train_test_split進行數(shù)據(jù)

分割。模型訓練sklearn了解邏輯回歸模型的基本原理和用途;熟悉如何使用LogisticRegression進行模型訓練;理解模型系數(shù)和OR

值的概念及計算方法。模型評估numpy、sklearn了解混淆矩陣、分類報告和準確率等評估指標的概念和

計算方法;熟悉如何使用confusion_matrix、classification_report和accuracy_score進行模型評估;

了解如何隨機選取樣本并進行預(yù)測。import

pandas

as

pdimport

numpy

as

npimport

matplotlib.pyplotas

pltfrom

sklearn.preprocessingimportStandardScalerfromsklearn.model_selection

import

train_test_split,learning_curvefrom

sklearn.linear_modelimportLogisticRegressionfrom

sklearn.metrics

import

classification_report,confusion_matrix,accuracy_scorefrom

sklearn.metrics

importroc_curve,auc??

9.2

案例步驟

第9章綜合案例●

首先導(dǎo)入數(shù)據(jù)處理、數(shù)值計算、數(shù)據(jù)標準化、模型訓練與評估、以及可視化所需的Python庫。9.2.1導(dǎo)入相關(guān)庫Pregnancies

Glucose

BloodPressure

SkinThickness

Insulin

BMI

DiabetesPedigreeFunction

Age

Outcome061487235033.60.62750111856629026.60.35131028183640023.30.672321318966239428.10.16721040137403516843.12.288331??

9.2案例步驟第9章綜合案例聲明

file_path

并賦值為diabetes.csv

的路徑,然后使用pd.read_csv(file_path)讀取文件并存儲到DataFrame

中。file_path

=

'diabetes.csv'diabetes_data

=

pd.read_csv(file_path)diabetes_data.head()9.2.2本地數(shù)據(jù)集加載###繪制柱狀圖呈現(xiàn)各屬性(特征)數(shù)據(jù)分布plt.

rcParams

[

'font.sans-serif']

=['

SimHei'

]#

用來正常顯示中文標簽plt.

rcParams

['axes.unicode_

minus']

=

False

#

用來正常顯示負號fig,axes

=

plt.

subplots(3,3,figsize=(15,10

))for

i,column

in

enumerate

(diabetes_

data

.

columns

[:8]):#

歷前8列并分別繪圖#

計算每個子圖的位置row

=i

//3col

=i%3axes[row,col].hist(diabetes_data[column],bins=10,color='skyblue',edgecolor='black')axes[row,col].

set_title

(column)axes[row,col].set_xlabel('值')axes[row,col].

set_ylabel

('頻數(shù)')axes[2,2].axis(

'off')#

隱藏最后一個子圖的坐標軸plt.

tight_

layout

()

#

調(diào)整布局以適應(yīng)所有子圖plt.

show()使用matplotlib

繪制3×3子圖網(wǎng)格,展示數(shù)據(jù)集中前8個特征的分布:設(shè)置中文顯示,每個子圖用10個bins繪制直方圖,添加標題和坐標軸標簽,隱藏第9個子圖,優(yōu)化布局后顯示。??

9.2

案例步驟

第9章綜合案例

119.2.3描述性統(tǒng)計分析###通過繪制條形圖查看標簽分布,即患病和未患病的患者數(shù)量分布plt.figure(

figsize=(5,3))#

(

)

布diabetes_data['Outcome'].value_counts().plot

(kind='bar',color=['skyblue','salmon'])plt.

title

(

'

尿

結(jié)

布')

#然加

題plt.ylabel('樣本數(shù)量')#橋加y觸標簽plt.tigh

t_

layout()

#

調(diào)整布局以

適應(yīng)所有子圖plt.

show()#

顯示圖表plt.xlabel(

'結(jié)果')

#添加x軸標簽??9.2

案例步驟

第9章綜合案例

12使用matplotlib繪制標簽分布條形圖:圖表大小為5×3英寸,用兩種顏色區(qū)分患病/未患病的樣本數(shù)量,

并添加標題和坐標軸標簽以清晰展示數(shù)據(jù)分布。糖尿病結(jié)果分布結(jié)果9.2.3描述性統(tǒng)計分析5004003002001000-樣本數(shù)量###異常值處理:檢查是否有任何不合邏輯的值###例如

血糖、血壓、胰島素等不可能為0的值columns_to_check

=['Glucose','BloodPressure','SkinThickness','Insulin','BMI']#將數(shù)據(jù)集中的這些列中的0值替換為

NaNdiabetes_data[columns_to_check]

=

diabetes_data[columns_to_check].replace

(0,np.nan)print

(diabetes_

data.isnul1().

sum())

#

查看各個

變量缺失

值情況diabetes_data.

dropna(inplace=True)#

刪除包含NaN值的行diabetes_

data.shape

#

顯示

處理后的

數(shù)據(jù)集

樣本量Pregnancies

0Glucose

5BloodPressure

35SkinThickness

227Insulin

374BMI

11DiabetesPedigreeFunction

0Age

0Outcome

0dtype:int64(392,9)檢查關(guān)鍵特征列中的不合理0值,替換為NaN

標記缺失,統(tǒng)計各列缺失值數(shù)量后刪除含缺失值的行,并輸出清洗后數(shù)據(jù)集的樣本

規(guī)模(行×列)。??9.2

案例步驟

第9章綜合案例9.2.4數(shù)據(jù)處理(異常值處理、標準化、數(shù)據(jù)分割)Pregnancies

Glucose

BloodPressure

SkinThickness

InsulinBMI

DiabetesPedigreeFunction

Age

Outcome3-0.717427

-1.091046-0.373655-0.585110-0.522842

-0.710421-1.031876

-0.96829904-1.029213

0.466314-2.4569640.557421

0.100631

1.4267305.115111

0.20958516-0.093854

-1.447941-1.6556910.271788-0.573394

-0.297238-0.797126-0.47751418-0.4056402.413014-0.0531461.5095303.260122-0.368477-1.057960

2.172726113-0.7174272.153454-0.854419-0.585110

5.812990-0.425468-0.3624022.76166819.2.4數(shù)據(jù)處理(異常值處理、標準化、數(shù)據(jù)分割)使用StandardScaler`

對特征數(shù)據(jù)進行標準化(均值為0,標準差為1),以加速模型收斂并提升性能。###

數(shù)據(jù)標準化scaler

=

StandardScaler()

#

創(chuàng)建

StandardScaler

對象features

=[

'Pegnanci

es','GLucose’,"'Blood

Pressure’,'Skin

Thickness’,'Insulin','BMI',

DiabetesPedigreeFunction',"Age'

]

#

定義要標準化的特征列diabetes_

data[features

]=

scaler

.fit_

transform

(diabetes_

data[features])

#

使用

Standardscaler

對指定特征列進行標準化處理diabetes_

data.

head()

#

顯示標準化后的

數(shù)據(jù)集的前幾行??

9.2案例步驟第9章綜合案例###

數(shù)據(jù)分割X

=

diabetes_data[features]y=

diabetes_data['Outcome']X_train,X_test,y_train,y_test=

train_test_split(X,y,test_size=0.2,random_state=42)完成數(shù)據(jù)標準化后,將數(shù)據(jù)集分割為訓練集和測試集,其中test_size=0.2參數(shù)指定了測試集占總數(shù)據(jù)的20%,而random_state=42參數(shù)確保了每次分割都能得到相同的結(jié)果,便于

重現(xiàn)和比較。??

9.2

案例步驟

第9章綜合案例9.2.4數(shù)據(jù)處理(異常值處理、標準化、數(shù)據(jù)分割)model

=

LogisticRegression(max_

iter=1000)#

創(chuàng)建邏髯回歸模型實例model.fit(X_

train,y_

train)

#

根據(jù)提供的訓練數(shù)據(jù)擬合模型###計算各變量

OR值print(model.coef_[0])

#查看邏輯回歸模型的系數(shù)or_values=

np.exp(model.coef_[0])#計算OR值,OR值是模型系數(shù)的自然指數(shù)

exp(coef_)feature_names

=[

'Pregnancies','Glucose','BloodPressure','SkinThickness','Insulin','BMI','DiabetesPedigreeFunction','Age']

for

feature,or_valueinzip(feature_names,or_values):#

打印每個特征對應(yīng)的OR值print(f"特征{feature}的OR值:{or_value:.2f}")9.2.5模型訓練使

用LogisticRegression(max_iter=1000)

訓練模型,輸出特征系數(shù)并計算OR值(比值比),解釋各特征對預(yù)測結(jié)果的影響強度。[0.362658981.126296740.124222330.221689560.13115550.31819543

0.408242130.19949111]特征Pregnancies

的OR值:1.44特征Glucose

的OR值:3.08特征BloodPressure

的OR值:1.13特征SkinThickness

的OR值:1.25特征Insulin的OR值:1.14特征BMI的OR值:1.37特征DiabetesPedigreeFunction的OR值:1.50特征Age的OR值:1.22??9.2

案例步驟

第9章綜合案例###

在測試集上進行模型評估y_pred

=

model.predict(X_

test

)

#

代入測試集計算預(yù)測值print

(

"Confusion

Matrix:")print

(confusion_

matrix(y_

test,y_

pred))

#

輸出混烤矩陣print

("\nClassificationReport:")print

(classification_

report(y_

test,y_

pred))

#

輸出分類報告print(f'準確率:{accuracy_score(y_test,y_pred):.3f

}')#輸出準磅率###

隨機選取五個樣本查看真實值和預(yù)測值num_

samples

=

5#

設(shè)置隨機樣本的數(shù)量#生成隨機索引并基于索引選出5個樣本random_indices

=

np.random.randint(0,len(X_test),num_samples)

sample

=

X_test.

iloc

[

random_indices]#

獲取樣本的真實標簽original_outcome

=y_test.iloc

[random_indices]#使用模型對5個樣本進行預(yù)測predicted_outcome=

model.predict(sample)##輸出每個樣本的原始結(jié)果和預(yù)測結(jié)架for

i,j

in

zip(original_outcome,predicted_outcome):print(f'原始樣本標簽:{

i}

,預(yù)測結(jié)果:{j}')Confusion

Matrix:[[45

7][1116]]Classification

Report:01accuracymacro

avg

weightedavgprecision0.800.700.75

0.77recall0.870.590.73

0.77f1-score0.83

0.640.77

0.74

0.77support5227797979準確率:0.772原始樣本標簽:0,預(yù)測結(jié)果:0原始樣本標簽:0,預(yù)測結(jié)果:0原始樣本標簽:0,預(yù)測結(jié)果:0原始樣本標簽:0,預(yù)測結(jié)果:0原始樣本標簽:0,預(yù)測結(jié)果:09.2.6模型評估(模型測試、隨機選取樣本測試、ROC

曲線繪制)在模型評估階段,首先通過predict方法生成測試集預(yù)測結(jié)果y_pred,然后使用confusion_matrix輸出混淆矩陣(TN=52,FP=7,FN=11,TP=16),顯示模型在陽性樣本檢測上存在不足。接著通過classification_report輸出精確率、召回率、F1

分數(shù)等詳細指標,并用accuracy_score計算整體準確率。最后,隨機選取5個測試樣本,對比真實標簽和預(yù)測結(jié)果,直觀展示模型的具體表現(xiàn)。??9.2

案例步驟

第9章綜合案例

17#計算模型的預(yù)測概率y_pred_prob=model.predict_proba(X_train)[:,1]#

計算ROC

曲線的值fpr,tpr,thresholds=roc_curve(y_train,y_pred_prob)#

計算

值roc_auc

=auc(fpr,tpr)#繪制ROC曲線plt.figure()plt.plot(fpr,tpr,color='darkorange',1w=2,label=f'ROC

curve(area={roc_auc:.2f})')plt.plot([0,1],[0,1],color='navy',1w=2,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('Receiver

Operating

Characteristic(ROC)Curve')plt.legend(loc="Iower

right")plt.show()9.2.6模型評估(模型測試、隨機選取樣本測試、ROC曲線繪制)通過繪制ROC曲

模型的分類

性能

:首先

利用predict_proba()計

算正類

概率,再

過roc_curve()

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論