用scikit-learn和pandas學習線性回歸

對于想深入了解線性回歸的童鞋,這里給出一個完整的例子,詳細學完這個例子,對用scikit-learn來運行線性回歸,評估模型不會有什么問題了。

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

沒有數(shù)據(jù),當然沒法研究機器學習啦。:) 這里我們用UCI大學公開的機器學習數(shù)據(jù)來跑線性回歸。

數(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/

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

我們的問題是得到一個線性的關系,對應PE是樣本輸出,而AT/V/AP/RH這4個是樣本特征, 機器學習的目的就是得到一個線性回歸模型,即:

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

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

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

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

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

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

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

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

先把要導入的庫聲明了: