機(jī)器學(xué)習(xí)技術(shù)任務(wù)驅(qū)動(dòng)式教程-課件 模塊4 線性回歸和邏輯回歸預(yù)測_第1頁
機(jī)器學(xué)習(xí)技術(shù)任務(wù)驅(qū)動(dòng)式教程-課件 模塊4 線性回歸和邏輯回歸預(yù)測_第2頁
機(jī)器學(xué)習(xí)技術(shù)任務(wù)驅(qū)動(dòng)式教程-課件 模塊4 線性回歸和邏輯回歸預(yù)測_第3頁
機(jī)器學(xué)習(xí)技術(shù)任務(wù)驅(qū)動(dòng)式教程-課件 模塊4 線性回歸和邏輯回歸預(yù)測_第4頁
機(jī)器學(xué)習(xí)技術(shù)任務(wù)驅(qū)動(dòng)式教程-課件 模塊4 線性回歸和邏輯回歸預(yù)測_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)探查數(shù)據(jù)可視化數(shù)據(jù)轉(zhuǎn)換回歸模型訓(xùn)練數(shù)據(jù)預(yù)測線性回歸和邏輯回歸預(yù)測參考書目《機(jī)器學(xué)習(xí)技術(shù)任務(wù)驅(qū)動(dòng)式教程》模塊4機(jī)器學(xué)習(xí)技術(shù)目錄波士頓房價(jià)預(yù)測糖尿病病期預(yù)測汽車購買預(yù)測小結(jié)習(xí)題四線性回歸和邏輯回歸預(yù)測第

4章機(jī)器學(xué)習(xí)技術(shù)數(shù)據(jù)housing.data記錄了共計(jì)506條波士頓郊區(qū)的住房價(jià)值及其13個(gè)影響因素的信息。詳細(xì)的字段描述見下表。1.1任務(wù)描述1波士頓房價(jià)預(yù)測字段字段類型允許為空標(biāo)簽?例子城鎮(zhèn)人均犯罪率float否否0.00632住宅用地所占比例float否否18.0城鎮(zhèn)中非住宅用地所占比例float否否2.31虛擬變量,用于回歸分析int否否0環(huán)保指數(shù)float否否0.538每棟住宅的房間數(shù)float否否6.5751940年以前建成的自住單位的比例float否否65.21.1任務(wù)描述字段字段類型允許為空標(biāo)簽?例子距離5個(gè)波士頓的就業(yè)中心的加權(quán)距離float否否4.0900距離高速公路的便利指數(shù)int否否1每一萬美元的不動(dòng)產(chǎn)稅率float否否296.0城鎮(zhèn)中的教師學(xué)生比例float否否15.3城鎮(zhèn)中的黑人比例float否否396.90地區(qū)中有多少房東屬于低收入人群float否否4.98自住房屋房價(jià)中位數(shù)(也就是均價(jià))float否是24.0接上1波士頓房價(jià)預(yù)測1.1任務(wù)描述1)通過自住房屋城鎮(zhèn)人均犯罪率(如0.00632)、住宅用地所占比例(如18.0)、城鎮(zhèn)中非住宅用地所占比例(如2.31)等13個(gè)屬性值,預(yù)測該自住房屋的均價(jià)。2)通過擬合度指標(biāo)R2評(píng)價(jià)回歸模型的擬合效果。任務(wù)目標(biāo)1波士頓房價(jià)預(yù)測1.2

任務(wù)分解import方式引入依賴的模塊可視化樣本的空間分布、待測試樣本和訓(xùn)練樣本的空間關(guān)系依賴庫導(dǎo)入數(shù)據(jù)探查數(shù)據(jù)可視化從探查數(shù)據(jù)內(nèi)容開始,經(jīng)過分析數(shù)據(jù)分布,使用邏輯回歸模型找到標(biāo)簽和數(shù)據(jù)特征之間的關(guān)系,然后利用線性回歸模型測試數(shù)據(jù),通過模型擬合度R2評(píng)價(jià)模型。1波士頓房價(jià)預(yù)測檢查樣本分布、特征/標(biāo)簽類型、空值、重復(fù)行、屬性相互關(guān)系1.2

任務(wù)分解轉(zhuǎn)換Pandas類型到Numpy類型在已知樣本上訓(xùn)練回歸模型通過相關(guān)系數(shù)找到關(guān)系不明顯的特征后刪除,提高線性回歸模型的預(yù)測準(zhǔn)確率數(shù)據(jù)轉(zhuǎn)換模型訓(xùn)練降維接上模型評(píng)估1波士頓房價(jià)預(yù)測根據(jù)測試集預(yù)測得到的label,跟真實(shí)label比較,計(jì)算預(yù)測準(zhǔn)確率1.3

任務(wù)實(shí)施1.3.1依賴庫導(dǎo)入步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">依賴庫導(dǎo)入</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施步驟2:導(dǎo)入依賴庫。importpandasaspdimportmatplotlibasmplimportmatplotlib.pyplotaspltfromsklearnimportmodel_selectionfromsklearn.linear_modelimportLinearRegression按“SHIFT+Enter”,檢查輸出無異常。1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施1.3.2數(shù)據(jù)探查文件讀入DataFrame對(duì)象后,需要觀察不同標(biāo)簽的數(shù)據(jù)分布。步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">數(shù)據(jù)探查</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施步驟2:讀入數(shù)據(jù)集文件到DataFrame對(duì)象。names=['人均犯罪率','住宅用地比例','非住宅用地比例','虛擬變量','環(huán)保指數(shù)','住宅房間數(shù)','老住宅比例','就業(yè)中心距離','便利指數(shù)','不動(dòng)產(chǎn)稅率','師生比','黑人比例','房東收入比例','均價(jià)']df=pd.read_csv('C:/data/housing.data',header=None,sep='\s+',names=names)df.head()1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1.3

任務(wù)實(shí)施步驟3:數(shù)據(jù)描述。df.describe()1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測人均犯罪率的均值為3.61,而中位數(shù)和最小值只有0.25和0.006,說明存在一些極大值變相地提高了平均值,類似的數(shù)據(jù)還有住宅用地所占比例等,因此可以后續(xù)用箱線圖探究此字段中數(shù)值的合理性。按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1.3

任務(wù)實(shí)施1.3.3數(shù)據(jù)可視化與房價(jià)可能相關(guān)的相關(guān)特征比較多,利用圖表能夠更加直觀地表示數(shù)據(jù)分布,這里使用Matplotlib繪制圖表。1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施步驟1:定義2級(jí)標(biāo)題。1波士頓房價(jià)預(yù)測##<fontcolor="black">數(shù)據(jù)可視化</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1.3

任務(wù)實(shí)施步驟2:Matplotlib支持中文字符。mpl.rcParams['font.sans-serif']=['SimHei']按“SHIFT+Enter”,檢查輸出無異常1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施步驟3:利用箱圖分析“人均犯罪率”、“住宅用地所占比例”字段的分布趨勢。fig=plt.figure()ax1=fig.add_subplot(121)ax1.boxplot(df['人均犯罪率'])ax1.set_title('人均犯罪率_箱圖')ax2=fig.add_subplot(122)ax2.boxplot(df['住宅用地比例'])ax2.set_title('住宅用地比例_箱圖')plt.show()1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測按“SHIFT+Enter”,運(yùn)行結(jié)果如下:人均犯罪率和住宅用地比例的許多數(shù)據(jù)都集中在75%分位數(shù)以上,說明這個(gè)數(shù)據(jù)不是正態(tài)分布,且存在較多的極端值。1.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測知識(shí)點(diǎn):百分位數(shù)百分位數(shù)將一組數(shù)據(jù)從小到大排序,并計(jì)算相應(yīng)的累計(jì)百分位,則某一百分位所對(duì)應(yīng)數(shù)據(jù)的值就稱為這一百分位的百分位數(shù)。1.3

任務(wù)實(shí)施步驟4:利用直方圖分析房子“均價(jià)”字段的分布趨勢。plt.hist(df['均價(jià)'],color='skyblue')plt.axvline(x=df['均價(jià)'].describe()['25%'].mean(),linestyle='--',color='red')plt.axvline(x=df['均價(jià)'].describe()['50%'],linestyle='--',color='darkorange')plt.axvline(x=df['均價(jià)'].describe()['75%'],linestyle='--',color='yellowgreen')plt.title("房價(jià)均值直方圖")plt.show()1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測按“SHIFT+Enter”,運(yùn)行結(jié)果如下:從該直方圖中可以得知在波士頓地區(qū)20000美元左右的房價(jià)最多,存在少量高房價(jià)房源。1.3

任務(wù)實(shí)施1.3.4數(shù)據(jù)轉(zhuǎn)換步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">數(shù)據(jù)轉(zhuǎn)換</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施步驟2:拆分出特征和標(biāo)簽。X=df.iloc[:,0:-1].valuesy=df.iloc[:,-1]按“SHIFT+Enter”,

檢查輸出無異常1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施1.3.5模型訓(xùn)練步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">模型訓(xùn)練</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施步驟2:數(shù)據(jù)集拆分成訓(xùn)練集和測試集,測試集占20%。X_train,X_test,y_train,y_test=model_selection.train_test_split(X,y,random_state=4,test_size=0.2)X_train.shape,X_test.shape按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施步驟3:在訓(xùn)練集上訓(xùn)練線性回歸模型。lr_model=LinearRegression()lr_model.fit(X_train,y_train)按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測知識(shí)點(diǎn):線性回歸模型線性回歸模型線性回歸模型是一種預(yù)測性的建模技術(shù),它研究的是因變量(目標(biāo))和自變量(預(yù)測器)之間的關(guān)系,具體過程是:給定n個(gè)屬性x=(x1,x2,x3,???,xn),其中xi是x在第i個(gè)屬性上的取值,線性模型f(x)=b1x1+b2x2+b3x3+???+bnxn,其中,bi和b0為參數(shù),參數(shù)確定之后,模型就確定了。

線性回歸模型分為一元線性回歸和多元線性回歸。1.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測線性回歸算法1)一元線性回歸

只用一個(gè)x來預(yù)測y,即找一條直線來擬合數(shù)據(jù),并且讓這條直線盡可能地?cái)M合圖中的數(shù)據(jù)點(diǎn),當(dāng)有一個(gè)新的x的時(shí)候,就可以用這個(gè)直線方程來預(yù)測大概的y值。2)多元線性回歸

用多個(gè)x的線性組合來預(yù)測y,比如當(dāng)有2個(gè)x(x1、x2)的時(shí)候,相當(dāng)于找一個(gè)平面來擬合數(shù)據(jù),并且讓這個(gè)平面盡可能地?cái)M合圖中的數(shù)據(jù)點(diǎn),建立相應(yīng)的多元線性回歸方程,當(dāng)有一組新的(x1、x2)的時(shí)候,就可以用這個(gè)方程來預(yù)測大概的y值。接上1.3

任務(wù)實(shí)施1.3.6模型評(píng)估步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">模型評(píng)估</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施步驟2:計(jì)算模型擬合度。R2=lr_model.score(X_test,y_test)print("預(yù)測準(zhǔn)確率=%.2f%%"%(R2*100))按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1波士頓房價(jià)預(yù)測1.3

任務(wù)實(shí)施1.3.7降維為了便于辨別每一個(gè)特征和自住房屋房價(jià)的關(guān)系,通過DataFrame類的corr方法找到線性關(guān)系不明顯的特征后刪除,提高線性回歸模型的預(yù)測準(zhǔn)確率。1波士頓房價(jià)預(yù)測步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">降維</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測知識(shí)點(diǎn):降維降維降維是指通過保留一些比較重要的特征,去除一些冗余的特征,減少數(shù)據(jù)特征的維度。如果維度數(shù)據(jù)較大大,并且降維后對(duì)模型精度影響也不大,那么就可以進(jìn)行降維。

特征選擇是一種重要的降維方法,特征選擇用選擇的特征代替所有特征,不改變原有特征,也不產(chǎn)生新的特征值,簡而言之就是留下重要的,去掉不重要的,其關(guān)鍵點(diǎn)在于區(qū)分變量的重要性。1.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測步驟2:計(jì)算相關(guān)系數(shù)。df.corr()["均價(jià)"]按“SHIFT+Enter”,運(yùn)行結(jié)果如下:絕對(duì)值最低的特征是虛擬變量,在模型訓(xùn)練中去除這個(gè)特征再次訓(xùn)練后評(píng)估。1.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測知識(shí)點(diǎn):相關(guān)系數(shù)相關(guān)系數(shù)相關(guān)系數(shù)是最早由統(tǒng)計(jì)學(xué)家卡爾·皮爾遜設(shè)計(jì)的統(tǒng)計(jì)指標(biāo),是研究變量之間線性相關(guān)程度的量,一般用字母r表示。由于研究對(duì)象的不同,相關(guān)系數(shù)有多種定義方式,較為常用的是皮爾遜相關(guān)系數(shù)。

相關(guān)表和相關(guān)圖可反映兩個(gè)變量之間的相互關(guān)系及其相關(guān)方向,但無法確切地表明兩個(gè)變量之間相關(guān)的程度。相關(guān)系數(shù)是用以反映變量之間相關(guān)關(guān)系密切程度的統(tǒng)計(jì)指標(biāo)。相關(guān)系數(shù)一般介于-1和1之間,相關(guān)系數(shù)絕對(duì)值越大,相關(guān)性越強(qiáng)。1.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測步驟3:從訓(xùn)練數(shù)據(jù)中去除相關(guān)系數(shù)最低的列。less_cols=list(range(13))less_cols.remove(3)#刪除虛擬標(biāo)量特征less_cols按“SHIFT+Enter”,運(yùn)行結(jié)果如下:1.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測步驟4:降維后訓(xùn)練模型。X_train_less=X_train[:,less_cols]lr_model=LinearRegression()lr_model.fit(X_train_less,y_train)按“SHIFT+Enter”,檢查輸出無異常1.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測步驟5:重新預(yù)測。X_test_less=X_test[:,less_cols]R2=lr_model.score(X_test_less,y_test)print("預(yù)測準(zhǔn)確率=%.2f%%"%(R2*100))按“SHIFT+Enter”,運(yùn)行結(jié)果如下:從最后的結(jié)果可以看出,去除最低列之后,模型的擬合度有所上升。數(shù)據(jù)集diabetes.csv是一個(gè)關(guān)于糖尿病的數(shù)據(jù)集,該數(shù)據(jù)集包括442個(gè)病人的生理數(shù)據(jù)及一年以后的病情發(fā)展情況,特征值包括年齡、性別、血壓、膽固醇等10項(xiàng),通過這10項(xiàng)數(shù)據(jù)完成糖尿病發(fā)展階段指數(shù)的線性回歸預(yù)測。詳細(xì)的字段描述見下表。2.1任務(wù)描述字段字段類型允許為空標(biāo)簽?例子年齡int否否59性別Str否否1身體質(zhì)量指數(shù)float否否32.1血壓float否否101.02糖尿病病期預(yù)測注:1.性別字段中,0表示女性,1表示男性。2.1任務(wù)描述字段字段類型允許為空標(biāo)簽?例子血清膽固醇int否否157低密度脂蛋白float否否93.2高密度脂蛋白float否否38.0總膽固醇

float否否4.0血清甘油三酯對(duì)數(shù)float否否4.8598血糖int否否87發(fā)展階段int否是151接上2糖尿病病期預(yù)測2.1任務(wù)描述1)通過年齡(如59)、性別(如1)、身體質(zhì)量指數(shù)(如32.1)等10個(gè)屬性值,預(yù)測該患者的糖尿病發(fā)展階段指數(shù)。2)通過擬合度指標(biāo)R2評(píng)價(jià)回歸模型的擬合效果。任務(wù)目標(biāo)2糖尿病病期預(yù)測2.2

任務(wù)分解import方式引入依賴的模塊可視化樣本的空間分布、待測試樣本和訓(xùn)練樣本的空間關(guān)系依賴庫導(dǎo)入數(shù)據(jù)探查數(shù)據(jù)可視化從探查數(shù)據(jù)內(nèi)容開始,經(jīng)過分析數(shù)據(jù)分布,使用邏輯回歸模型找到標(biāo)簽和數(shù)據(jù)特征之間的關(guān)系,然后利用線性回歸模型測試數(shù)據(jù),通過模型擬合度R2評(píng)價(jià)模型。檢查樣本分布、特征/標(biāo)簽類型、空值、重復(fù)行、屬性相互關(guān)系2糖尿病病期預(yù)測2.2

任務(wù)分解轉(zhuǎn)換Pandas類型到Numpy類型在已知樣本上訓(xùn)練回歸模型通過相關(guān)系數(shù)找到關(guān)系不明顯的特征后刪除,提高線性回歸模型的預(yù)測準(zhǔn)確率數(shù)據(jù)轉(zhuǎn)換模型訓(xùn)練降維接上模型評(píng)估根據(jù)測試集預(yù)測得到的label,跟真實(shí)label比較,計(jì)算預(yù)測準(zhǔn)確率2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施2.3.1依賴庫導(dǎo)入步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">依賴庫導(dǎo)入</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟2:導(dǎo)入依賴庫。importpandasaspdimportmatplotlibasmplimportmatplotlib.pyplotaspltfromsklearnimportmodel_selectionfromsklearn.linear_modelimportLinearRegression按“SHIFT+Enter”,檢查輸出無異常。2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施2.3.2數(shù)據(jù)探查文件讀入DataFrame對(duì)象后,需要觀察不同標(biāo)簽的數(shù)據(jù)特征。步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">數(shù)據(jù)探查</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟2:讀入數(shù)據(jù)集文件到DataFrame對(duì)象。df=pd.read_csv('C:/data/diabetes.csv',sep='\s+')df.head()2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟3:數(shù)據(jù)描述。df.describe()2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施所有的字段包含442個(gè)樣本數(shù),因此數(shù)據(jù)集不存在缺失值的情況。結(jié)合均值、標(biāo)準(zhǔn)差、最小值和可以發(fā)現(xiàn)幾乎所有的字段的均值都近似等于中位數(shù),且標(biāo)準(zhǔn)差都明顯小于均值,可以初步判斷出這些字段的數(shù)據(jù)較為合理。按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟4:年齡字段分段統(tǒng)計(jì)。數(shù)據(jù)分段可以將年齡轉(zhuǎn)換為年齡段,方便后續(xù)統(tǒng)計(jì)。df['年齡段']=pd.cut(x=df['年齡'],bins=[0,39,49,59,69,79],labels=['40以下','40-49','50-59','60-69','70-79'])#pd.cut表示數(shù)據(jù)分段age_count=df['年齡段'].value_counts()#value_counts:數(shù)據(jù)頻數(shù)統(tǒng)計(jì)age_count=age_count.reindex(['40以下','40-49','50-59','60-69','70-79'])age_count2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施按“SHIFT+Enter”,運(yùn)行結(jié)果如下:可以看出年齡分布基本符合正態(tài)分布,50-59歲最多。2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施知識(shí)點(diǎn):數(shù)據(jù)分段數(shù)據(jù)分段在數(shù)據(jù)分析中,常常需要將連續(xù)數(shù)據(jù)離散化,這就是數(shù)據(jù)分段。數(shù)據(jù)分段就是指在連續(xù)數(shù)據(jù)取值范圍內(nèi)設(shè)置一些離散的分段點(diǎn),而將連續(xù)數(shù)據(jù)按照這些分段點(diǎn)進(jìn)行分段。

比如在人口普查時(shí),并不一定會(huì)統(tǒng)計(jì)每個(gè)年齡的比例,而是將年齡分為年輕型、成年型和老年型等不同年齡段,進(jìn)行統(tǒng)計(jì)。Pandas提供了cut函數(shù)進(jìn)行數(shù)據(jù)分段,具體用法可以參考pandas.cut(x,bins,labels)函數(shù)。2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟5:性別字段統(tǒng)計(jì)。gender_count=df['性別'].value_counts()gender_count.index=['男','女']gender_count2糖尿病病期預(yù)測按“SHIFT+Enter”,運(yùn)行結(jié)果如下:可以看出男性患者比女性患者多。2.3

任務(wù)實(shí)施2.3.3數(shù)據(jù)可視化2糖尿病病期預(yù)測##<fontcolor="black">數(shù)據(jù)可視化</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:步驟1:定義2級(jí)標(biāo)題。2.3

任務(wù)實(shí)施步驟2:Matplotlib支持中文字符和減號(hào)。plt.rcParams['font.sans-serif']=['SimHei']plt.rcParams[‘a(chǎn)xes.unicode_minus']=False按“SHIFT+Enter”,檢查輸出無異常2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟3:利用箱圖分析“人均犯罪率”、“住宅用地所占比例”字段的分布趨勢。fig=plt.figure(figsize=(10,4))ax1=fig.add_subplot(121)plt.rcParams['figure.figsize']=(3,3)ax1.bar(x=age_count.index,height=age_count,color='lightgreen',edgecolor='blue')ax1.set_title('年齡_直方圖')ax2=fig.add_subplot(122)ax2.pie(gender_count,colors=['darkorange','skyblue'],labels=['男','女'],autopct='%.1f%%')ax2.set_title('性別_餅圖')plt.show()2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施1波士頓房價(jià)預(yù)測知識(shí)點(diǎn):餅圖餅圖餅圖是以圓形代表研究對(duì)象的整體,用以圓心為共同頂點(diǎn)的各個(gè)不同扇形顯示各組成部分在整體中所占的比例,一般可用圖例表明各扇形所代表的項(xiàng)目的名稱及其所占百分比。

餅狀圖可以比較清楚地反映出部分與部分、部分與整體之間的數(shù)量關(guān)系,易于顯示每組數(shù)據(jù)相對(duì)于總數(shù)的比例,而且比較直觀。Matplotlib.pyplot模塊提供了pie函數(shù)繪制餅圖,具體用法可以參考plt.pie(x,colors,labels,autopct,explode,radius)函數(shù)。2.3

任務(wù)實(shí)施步驟4:利用雙折線圖比較糖尿病發(fā)展指數(shù)與血壓、總膽固醇、血糖的關(guān)系。因?yàn)樘悄虿“l(fā)展指數(shù)與血壓、總膽固醇、血糖的數(shù)據(jù)范圍有所不同,如果直接繪制圖形,效果不好,因此先將數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,標(biāo)準(zhǔn)化的方法為(x-平均值)/標(biāo)準(zhǔn)差。2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施2糖尿病病期預(yù)測fig=plt.figure(figsize=(12,10))ax1=fig.add_subplot(311)x=df.index[:100]y1=df['血壓'][:100]y1=(y1-y1.mean())/y1.std()y2=df['發(fā)展階段'][:100]y2=(y2-y2.mean())/y2.std()ax1.plot(x,y1,color='red')ax1.plot(x,y2,'darkgreen',linestyle='--')ax1.set_title('血壓--發(fā)展階段')2.3

任務(wù)實(shí)施2糖尿病病期預(yù)測接上ax2=fig.add_subplot(312)x=df.index[:100]y1=df['總膽固醇'][:100]y1=(y1-y1.mean())/y1.std()y2=df['發(fā)展階段'][:100]y2=(y2-y2.mean())/y2.std()ax2.plot(x,y1,color='red')ax2.plot(x,y2,'darkgreen',linestyle='--')ax2.set_title('總膽固醇--發(fā)展階段')2.3

任務(wù)實(shí)施2糖尿病病期預(yù)測接上ax3=fig.add_subplot(313)x=df.index[:100]y1=df['血糖'][:100]y1=(y1-y1.mean())/y1.std()y2=df['發(fā)展階段'][:100]y2=(y2-y2.mean())/y2.std()ax3.plot(x,y1,color='red')ax3.plot(x,y2,'darkgreen',linestyle='--')ax3.set_title('血糖--發(fā)展階段')plt.show()2.3

任務(wù)實(shí)施按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施知識(shí)點(diǎn):數(shù)據(jù)標(biāo)準(zhǔn)化數(shù)據(jù)標(biāo)準(zhǔn)化在進(jìn)行數(shù)據(jù)分析時(shí),數(shù)據(jù)具有單位是非常常見的,比如GDP可以以億作為單元,也可以以百萬作為單位,此時(shí)就會(huì)出現(xiàn)由于單位問題導(dǎo)致的數(shù)字大小問題,這種情況對(duì)于分析可能產(chǎn)生影響,因此需要對(duì)其進(jìn)行處理。還有一種情況是計(jì)算距離,數(shù)字1和2的距離可以直接相減得到距離值為1,另外一組數(shù)據(jù)為10000和20000,兩個(gè)數(shù)字直接相減得到距離值為10000。如果說距離數(shù)字越大代表距離越遠(yuǎn),那么明顯10000大于1,但這種情況僅僅是由于數(shù)據(jù)單位導(dǎo)致的。2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施數(shù)據(jù)標(biāo)準(zhǔn)化類似這些情況,在進(jìn)行數(shù)據(jù)分析之前,需要先將數(shù)據(jù)標(biāo)準(zhǔn)化,數(shù)據(jù)標(biāo)準(zhǔn)化就是通過一定的數(shù)學(xué)變換方式,對(duì)原始數(shù)據(jù)進(jìn)行一定轉(zhuǎn)換,使原始數(shù)據(jù)轉(zhuǎn)換為無量綱化指標(biāo)測評(píng)值,即各指標(biāo)值都處于同一個(gè)數(shù)量級(jí)別上,這樣可以進(jìn)行綜合分析和比較。標(biāo)準(zhǔn)化是一種最為常見的量綱化處理方式,其計(jì)算公式為:z=(x-x?)/s。接上2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施2.3.4數(shù)據(jù)轉(zhuǎn)換步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">數(shù)據(jù)轉(zhuǎn)換</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟2:查看數(shù)據(jù)。df.head()按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟3:刪除新生成的字段“年齡段”。df.drop(labels='年齡段',axis=1,inplace=True)df.head()按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟4:拆分出特征和標(biāo)簽。X=df.iloc[:,0:-1].valuesy=df.iloc[:,-1]按“SHIFT+Enter”,

檢查輸出無異常2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施2.3.5模型訓(xùn)練步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">模型訓(xùn)練</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟2:數(shù)據(jù)集拆分成訓(xùn)練集和測試集,測試集占20%。X_train,X_test,y_train,y_test=model_selection.train_test_split(X,y,random_state=4,test_size=0.2)X_train.shape,X_test.shape按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟3:在訓(xùn)練集上訓(xùn)練線性回歸模型。lr_model=LinearRegression()lr_model.fit(X_train,y_train)按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施2.3.6模型評(píng)估步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">模型評(píng)估</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟2:計(jì)算模型擬合度。R2=lr_model.score(X_test,y_test)print("預(yù)測準(zhǔn)確率=%.2f%%"%(R2*100))按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施2.3.7降維為了便于辨別每一個(gè)特征和自住房屋房價(jià)的關(guān)系,通過DataFrame類的corr方法找到線性關(guān)系不明顯的特征后刪除,提高線性回歸模型的預(yù)測準(zhǔn)確率。步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">降維</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟2:計(jì)算相關(guān)系數(shù)。df.corr()["發(fā)展階段"]2糖尿病病期預(yù)測絕對(duì)值最低的特征是性別,在模型訓(xùn)練中去除這個(gè)特征再次訓(xùn)練后評(píng)估。按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2.3

任務(wù)實(shí)施步驟3:從訓(xùn)練數(shù)據(jù)中去除相關(guān)系數(shù)最低的兩列。less_cols=list(range(10))less_cols.remove(1)less_cols按“SHIFT+Enter”,運(yùn)行結(jié)果如下:2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟4:降維后訓(xùn)練模型。X_train_less=X_train[:,less_cols]lr_model=LinearRegression()lr_model.fit(X_train_less,y_train)按“SHIFT+Enter”,檢查輸出無異常2糖尿病病期預(yù)測2.3

任務(wù)實(shí)施步驟5:重新預(yù)測。X_test_less=X_test[:,less_cols]R2=lr_model.score(X_test_less,y_test)print("預(yù)測準(zhǔn)確率=%.2f%%"%(R2*100))按“SHIFT+Enter”,運(yùn)行結(jié)果如下:從最后的結(jié)果可以看出,去除1列之后,模型的擬合度有所上升。2糖尿病病期預(yù)測數(shù)據(jù)集buycar.txt是一個(gè)關(guān)于汽車購買的數(shù)據(jù)集,該數(shù)據(jù)集包括50個(gè)用戶的年齡、性別、收入等數(shù)據(jù),通過這些數(shù)據(jù)建立邏輯回歸模型,并預(yù)測購買汽車的結(jié)果。詳細(xì)的字段描述見下表。3.1任務(wù)描述字段字段類型允許為空標(biāo)簽?例子IDint否否15624510性別int否否1年齡int否否19年收入int否否19000是否買車int否是03汽車購買預(yù)測注:1.性別字段中,0表示女性,1表示男性。2.是否買車字段中,0表示用戶尚未購買汽車,而1則表示已購買汽車。3.1任務(wù)描述1)通過用戶的性別、年齡、年收入(萬元),預(yù)測該用戶的購買汽車的可能性。2)計(jì)算模型預(yù)測的準(zhǔn)確率。3)通過numpy生成年齡、年收入的隨機(jī)數(shù),利用已經(jīng)建立的邏輯回歸模型進(jìn)行結(jié)果預(yù)測。任務(wù)目標(biāo)3汽車購買預(yù)測3.2

任務(wù)分解import方式引入依賴的模塊可視化樣本的空間分布、待測試樣本和訓(xùn)練樣本的空間關(guān)系依賴庫導(dǎo)入數(shù)據(jù)探查數(shù)據(jù)可視化從探查數(shù)據(jù)內(nèi)容開始,經(jīng)過分析數(shù)據(jù)分布,使用邏輯回歸模型找到標(biāo)簽和數(shù)據(jù)特征之間的關(guān)系,然后利用線性回歸模型測試數(shù)據(jù),通過模型擬合度R2評(píng)價(jià)模型。檢查樣本分布、特征/標(biāo)簽類型、空值、重復(fù)行、屬性相互關(guān)系3汽車購買預(yù)測3.2

任務(wù)分解轉(zhuǎn)換Pandas類型到Numpy類型在已知樣本上訓(xùn)練回歸模型利用已經(jīng)建立的邏輯回歸模型進(jìn)行結(jié)果預(yù)測數(shù)據(jù)轉(zhuǎn)換模型訓(xùn)練預(yù)測接上模型評(píng)估根據(jù)測試集預(yù)測得到的label,跟真實(shí)label比較,計(jì)算預(yù)測準(zhǔn)確率3汽車購買預(yù)測3.3

任務(wù)實(shí)施3.3.1依賴庫導(dǎo)入步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">依賴庫導(dǎo)入</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3汽車購買預(yù)測3.3

任務(wù)實(shí)施步驟2:導(dǎo)入依賴庫。importnumpyasnpimportpandasaspdimportmatplotlibasmplimportmatplotlib.pyplotaspltfromsklearnimportmodel_selectionfromsklearn.preprocessingimportStandardScalerfromsklearn.linear_modelimportLogisticRegression按“SHIFT+Enter”,檢查輸出無異常。3汽車購買預(yù)測3.3

任務(wù)實(shí)施3.3.2數(shù)據(jù)探查文件讀入DataFrame對(duì)象后,需要觀察不同標(biāo)簽的數(shù)據(jù)特征。步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">數(shù)據(jù)探查</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3汽車購買預(yù)測3.3

任務(wù)實(shí)施步驟2:讀入數(shù)據(jù)集文件到DataFrame對(duì)象。names=['ID','性別','年齡','年收入',"是否買車"]df=pd.read_csv('c:/data/buycar.txt',header=None,names=names)df.head(10)3汽車購買預(yù)測3.3

任務(wù)實(shí)施按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3汽車購買預(yù)測3.3

任務(wù)實(shí)施步驟3:數(shù)據(jù)描述。()3汽車購買預(yù)測按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3.3

任務(wù)實(shí)施步驟4:是否購買汽車頻數(shù)統(tǒng)計(jì)。首先將0轉(zhuǎn)換為“不買”,將1轉(zhuǎn)換為“買”,再進(jìn)行統(tǒng)計(jì)。df_new=df.replace({0:'不買',1:'買'})buy_result=df_new['是否買車'].value_counts()buy_result按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3汽車購買預(yù)測3.3

任務(wù)實(shí)施步驟5:數(shù)據(jù)分組統(tǒng)計(jì)。按照是否買車將客戶分為兩組,再統(tǒng)計(jì)不同組的平均年齡。group_buy_age=df_new.groupby(by='是否買車')['年齡'].mean()group_buy_age=round(group_buy_age,0)print("是否購買汽車用戶的平均年齡:")group_buy_age按“SHIFT+Enter”,運(yùn)行結(jié)果如下:。不買車用戶的平均年齡顯著低于買車用戶。3汽車購買預(yù)測3.3

任務(wù)實(shí)施步驟5:數(shù)據(jù)分組統(tǒng)計(jì)。按照是否買車將客戶分為兩組,再統(tǒng)計(jì)不同組的平均收入。group_buy_income=df_new.groupby(by='是否買車')['年收入'].mean()group_buy_income=round(group_buy_income,0)print("是否購買汽車用戶的平均年收入:")group_buy_income按“SHIFT+Enter”,運(yùn)行結(jié)果如下:。不買車用戶的平均收入顯著高于買車用戶。3汽車購買預(yù)測3.3

任務(wù)實(shí)施3.3.3數(shù)據(jù)可視化##<fontcolor="black">數(shù)據(jù)可視化</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3汽車購買預(yù)測3.3

任務(wù)實(shí)施步驟2:Matplotlib支持中文字符。mpl.rcParams['font.sans-serif']=['SimHei']按“SHIFT+Enter”,檢查輸出無異常3汽車購買預(yù)測3.3

任務(wù)實(shí)施步驟3:利用圓環(huán)圖顯示是否購買用戶比例。data=buy_resultlab=buy_result.indexplt.pie(x=buy_result,labels=buy_result.index,autopct='%.1f%%',colors=['darkorange','lightgreen'],radius=0.7)plt.pie(x=[1],colors='w',radius=0.5)plt.show()3汽車購買預(yù)測3.3

任務(wù)實(shí)施按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3汽車購買預(yù)測3.3

任務(wù)實(shí)施知識(shí)點(diǎn):圓環(huán)圖圓環(huán)圖圓環(huán)圖像餅圖一樣,圓環(huán)圖顯示各個(gè)部分與整體之間的關(guān)系繪制圓環(huán)圖時(shí)。繪制圓環(huán)圖時(shí),可以在一個(gè)繪圖窗口中,分別繪制兩個(gè)餅圖,嵌套在一起,并對(duì)兩個(gè)餅圖分別設(shè)置參數(shù)和顏色,得到圓環(huán)圖。外層餅圖起到顯示的效果,而內(nèi)層餅圖起到遮擋的效果。設(shè)置時(shí),只需將內(nèi)層餅圖設(shè)置一個(gè)值而不會(huì)被分割,同時(shí)將內(nèi)層餅圖的背景顏色設(shè)為白色即可。

Matplotlib.pyplot模塊提供了pie函數(shù)繪制圓環(huán)圖,具體函數(shù)用法可以參考plt.pie(x,colors,labels,autopct,explode,radius)的函數(shù)用法。3汽車購買預(yù)測3.3

任務(wù)實(shí)施步驟4:利用條形圖顯示用戶的特征數(shù)據(jù)分布。fig=plt.figure(figsize=(10,8))ax1=fig.add_subplot(211)x=group_buy_age.indexy=group_buy_ageax1.barh(x,y,height=0.4,color='skyblue')ax1.set_title('是否購買汽車用戶的平均年收入')3汽車購買預(yù)測3.3

任務(wù)實(shí)施接上ax2=fig.add_subplot(212)x=group_buy_income.indexy=group_buy_incomeax2.barh(x,y,height=0.4,color='skyblue')ax2.set_title('是否購買汽車用戶的平均年收入')plt.show()3汽車購買預(yù)測3.3

任務(wù)實(shí)施按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3汽車購買預(yù)測3.3

任務(wù)實(shí)施3.3.4數(shù)據(jù)轉(zhuǎn)換步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">數(shù)據(jù)轉(zhuǎn)換</font>按“SHIFT+Enter”,檢查輸出無異常3汽車購買預(yù)測3.3

任務(wù)實(shí)施步驟2:選取數(shù)值型變量“年齡”和“年收入”2個(gè)字段作為自變量。X=df.iloc[:,[2,3]].valuesy=df.iloc[:,4].values按“SHIFT+Enter”,檢查輸出無異常3汽車購買預(yù)測3.3

任務(wù)實(shí)施3.3.5模型訓(xùn)練步驟1:定義2級(jí)標(biāo)題。##<fontcolor="black">模型訓(xùn)練</font>按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3汽車購買預(yù)測3.3

任務(wù)實(shí)施步驟2:切分訓(xùn)練集和測試集。X_train,X_test,y_train,y_test=model_selection.train_test_split(X,y,random_state=4,test_size=0.2)X_train[:5]按“SHIFT+Enter”,運(yùn)行結(jié)果如下:3汽車購買預(yù)測3.3

任務(wù)實(shí)施步驟3:數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論