Python預測糖尿病


 

 

 

今天給大家講解一個實戰案例:如何根據現有數據預測糖尿病。在這個案例開始之前,希望大家回憶一下大學里講過的線性回歸的知識,這是數據挖掘里非常重要的一部分知識。當然,鑒於大家都學過,本篇就不再贅述。

一. 數據集介紹

diabetes dataset數據集

這是一個糖尿病的數據集,主要包括442行數據,10個屬性值,分別是:Age(年齡)、性別(Sex)、Body mass index(體質指數)、Average Blood Pressure(平均血壓)、S1~S6一年后疾病級數指標。Target為一年后患疾病的定量指標。

輸出如下所示:

二、LinearRegression使用方法

LinearRegression模型在Sklearn.linear_model下,它主要是通過fit(x,y)的方法來訓練模型,其中x為數據的屬性,y為所屬類型。

sklearn中引用回歸模型的代碼如下:

輸出的函數原型如下所示:

fit(x, y): 訓練。分析模型參數,填充數據集。其中x為特征,y位標記或類屬性。

predict(): 預測。它通過fit()算出的模型參數構成的模型,對解釋變量進行預測其類屬性。預測方法將返回預測值y_pred。

引用搬磚小工053"大神的例子:

運行結果如下所示,首先輸出數據集,同時調用sklearn包中的LinearRegression()回歸函數,fit(X, Y)載入數據集進行訓練,然后通過predict()預測數據12尺寸的匹薩價格,最后定義X2數組,預測它的價格。

輸出的圖形如下所示:

線性模型的回歸系數W會保存在他的coef_方法中,截距保存在intercept_中。score(X,y,sample_weight=None) 評分函數,返回一個小於1的得分,可能會小於0。

三、線性回歸判斷糖尿病

1.Diabetes數據集(糖尿病數據集)

糖尿病數據集包含442個患者的10個生理特征(年齡,性別、體重、血壓)和一年以后疾病級數指標。

然后載入數據,同時將diabetes糖尿病數據集分為測試數據和訓練數據,其中測試數據為最后20行,訓練數據從0到-20行(不包含最后20行),即diabetes.data[:-20]。

輸出結果如下所示,可以看到442個數據划分為422行進行訓練回歸模型,20行數據用於預測。輸出的diabetes_x_test共20行數據,每行僅一個特征。


2.完整代碼

改代碼的任務是從生理特征預測疾病級數,但僅獲取了一維特征,即一元線性回歸。【線性回歸】的最簡單形式給數據集擬合一個線性模型,主要是通過調整一系列的參以使得模型的殘差平方和盡量小。

線性模型:y = βX+b

X:數據 y:目標變量 β:回歸系數 b:觀測噪聲(bias,偏差)

運行結果如下所示,包括系數、殘差平方和、方差分數。

繪制圖形如下所示,每個點表示真實的值,而直線表示預測的結果,比較接近吧。

同時繪制圖形時,想去掉坐標具體的值,可增加如下代碼:

四、優化代碼

下面是優化后的代碼,增加了斜率、 截距的計算,同時增加了點圖到線性方程的距離,保存圖片設置像素。

運行結果如下所示:

繪制圖形如下所示:

 

歡迎關注公眾號:Python爬蟲數據分析挖掘,回復【開源源碼】免費獲取更多開源項目源碼

公眾號每日更新python知識和【免費】工具


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM