版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 導(dǎo)游復(fù)試強化考核試卷含答案
- 公墓管理員安全文明模擬考核試卷含答案
- 燃氣具制造工班組建設(shè)強化考核試卷含答案
- 毛衫套口工安全文明測試考核試卷含答案
- 工具五金制作工沖突解決知識考核試卷含答案
- 小型家用電器制造工沖突解決考核試卷含答案
- 醫(yī)學影像診斷入門:心臟腫瘤 MRI 課件
- 電火花成形機床操作工QC管理評優(yōu)考核試卷含答案
- 半導(dǎo)體器件和集成電路電鍍工安全綜合模擬考核試卷含答案
- 井下支護工崗前認證考核試卷含答案
- 25數(shù)五上數(shù)學人教版期末押題卷5套
- T∕GDAM 005.1-2025 實驗室儀器設(shè)備管理規(guī)范 第1部分:總則
- 2026年遼寧金融職業(yè)學院單招職業(yè)適應(yīng)性測試題庫及參考答案詳解
- 2025年全面質(zhì)量管理體系建設(shè)項目可行性研究報告
- 光療課件教學課件
- 北師大版二上《參加歡樂購物活動》(課件)
- 基坑土方開挖專項施工方案(完整版)
- 2026年教師資格之中學綜合素質(zhì)考試題庫500道及完整答案【名師系列】
- 中海大海洋地質(zhì)學課件第4章河口與海岸-3第十二講
- 招標人主體責任履行指引
- 財務(wù)審計工作程序及風險防范措施
評論
0/150
提交評論