用scikit-learn和pandas學(xué)習(xí)線性回歸

對(duì)于想深入了解線性回歸的童鞋,這里給出一個(gè)完整的例子,詳細(xì)學(xué)完這個(gè)例子,對(duì)用scikit-learn來(lái)運(yùn)行線性回歸,評(píng)估模型不會(huì)有什么問(wèn)題了。

1. 獲取數(shù)據(jù),定義問(wèn)題

沒(méi)有數(shù)據(jù),當(dāng)然沒(méi)法研究機(jī)器學(xué)習(xí)啦。:) 這里我們用UCI大學(xué)公開(kāi)的機(jī)器學(xué)習(xí)數(shù)據(jù)來(lái)跑線性回歸。

數(shù)據(jù)的介紹在這: http://archive.ics.uci.edu/ml/datasets/Combined+Cycle+Power+Plant

數(shù)據(jù)的下載地址在這: http://archive.ics.uci.edu/ml/machine-learning-databases/00294/

里面是一個(gè)循環(huán)發(fā)電場(chǎng)的數(shù)據(jù),共有9568個(gè)樣本數(shù)據(jù),每個(gè)數(shù)據(jù)有5列,分別是:AT(溫度), V(壓力), AP(濕度), RH(壓強(qiáng)), PE(輸出電力)。我們不用糾結(jié)于每項(xiàng)具體的意思。

我們的問(wèn)題是得到一個(gè)線性的關(guān)系,對(duì)應(yīng)PE是樣本輸出,而AT/V/AP/RH這4個(gè)是樣本特征, 機(jī)器學(xué)習(xí)的目的就是得到一個(gè)線性回歸模型,即:

PE=θ0+θ1?AT+θ2?V+θ3?AP+θ4?RHPE=θ0+θ1?AT+θ2?V+θ3?AP+θ4?RH

而需要學(xué)習(xí)的,就是θ0,θ1,θ2,θ3,θ4θ0,θ1,θ2,θ3,θ4這5個(gè)參數(shù)。

2. 整理數(shù)據(jù)

下載后的數(shù)據(jù)可以發(fā)現(xiàn)是一個(gè)壓縮文件,解壓后可以看到里面有一個(gè)xlsx文件,我們先用excel把它打開(kāi),接著“另存為“”csv格式,保存下來(lái),后面我們就用這個(gè)csv來(lái)運(yùn)行線性回歸。

打開(kāi)這個(gè)csv可以發(fā)現(xiàn)數(shù)據(jù)已經(jīng)整理好,沒(méi)有非法數(shù)據(jù),因此不需要做預(yù)處理。但是這些數(shù)據(jù)并沒(méi)有歸一化,也就是轉(zhuǎn)化為均值0,方差1的格式。也不用我們搞,后面scikit-learn在線性回歸時(shí)會(huì)先幫我們把歸一化搞定。

好了,有了這個(gè)csv格式的數(shù)據(jù),我們就可以大干一場(chǎng)了。

3. 用pandas來(lái)讀取數(shù)據(jù)

我們先打開(kāi)ipython notebook,新建一個(gè)notebook。當(dāng)然也可以直接在python的交互式命令行里面輸入,不過(guò)還是推薦用notebook。下面的例子和輸出我都是在notebook里面跑的。

先把要導(dǎo)入的庫(kù)聲明了:

import matplotlib.pyplot as plt %matp
        
		

網(wǎng)友評(píng)論