Python數(shù)據(jù)挖掘 | 實戰(zhàn)案例之預測糖尿病
??今天給大家講解一個實戰(zhàn)案例:如何根據(jù)現(xiàn)有數(shù)據(jù)預測糖尿病。在這個案例開始之前,希望大家回憶一下大學里講過的線性回歸的知識,這是數(shù)據(jù)挖掘里非常重要的一部分知識。當然,鑒于大家都學過,本篇就不再贅述。
一. 數(shù)據(jù)集介紹diabetes dataset數(shù)據(jù)集
???這是一個糖尿病的數(shù)據(jù)集,主要包括442行數(shù)據(jù),10個屬性值,分別是:Age(年齡)、性別(Sex)、Body mass index(體質指數(shù))、Average Blood Pressure(平均血壓)、S1~S6一年后疾病級數(shù)指標。Target為一年后患疾病的定量指標。

輸出如下所示:

二、LinearRegression使用方法
? ? ? ? LinearRegression模型在Sklearn.linear_model下,它主要是通過fit(x,y)的方法來訓練模型,其中x為數(shù)據(jù)的屬性,y為所屬類型。
sklearn中引用回歸模型的代碼如下:

輸出的函數(shù)原型如下所示:

? ? ? ? fit(x, y): 訓練。分析模型參數(shù),填充數(shù)據(jù)集。其中x為特征,y位標記或類屬性。
? ? ? ? predict(): 預測。它通過fit()算出的模型參數(shù)構成的模型,對解釋變量進行預測其類屬性。預測方法將返回預測值y_pred。
引用搬磚小工053"大神的例子:

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

輸出的圖形如下所示:

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

三、線性回歸判斷糖尿病
? 1.Diabetes數(shù)據(jù)集(糖尿病數(shù)據(jù)集)
? ? ? ? 糖尿病數(shù)據(jù)集包含442個患者的10個生理特征(年齡,性別、體重、血壓)和一年以后疾病級數(shù)指標。
? ? ? ? 然后載入數(shù)據(jù),同時將diabetes糖尿病數(shù)據(jù)集分為測試數(shù)據(jù)和訓練數(shù)據(jù),其中測試數(shù)據(jù)為最后20行,訓練數(shù)據(jù)從0到-20行(不包含最后20行),即diabetes.data[:-20]。

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

2.完整代碼
? ? ? ? 改代碼的任務是從生理特征預測疾病級數(shù),但僅獲取了一維特征,即一元線性回歸?!揪€性回歸】的最簡單形式給數(shù)據(jù)集擬合一個線性模型,主要是通過調整一系列的參以使得模型的殘差平方和盡量小。
線性模型:y = βX+b
? ? ? ? X:數(shù)據(jù) y:目標變量 β:回歸系數(shù) b:觀測噪聲(bias,偏差)

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

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

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

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

運行結果如下所示:

繪制圖形如下所示:
