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

輸出如下所示:

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

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

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

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

輸出的圖形如下所示:

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

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

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

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

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

? ? ? ? 繪制圖形如下所示,每個(gè)點(diǎn)表示真實(shí)的值,而直線(xiàn)表示預(yù)測(cè)的結(jié)果,比較接近吧。

? ? ? ? 同時(shí)繪制圖形時(shí),想去掉坐標(biāo)具體的值,可增加如下代碼:

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

運(yùn)行結(jié)果如下所示:

繪制圖形如下所示:
