1. 程式人生 > >sklearn學習筆記之簡單線性回歸

sklearn學習筆記之簡單線性回歸

學習 實現 數據 list 標準 code 線性模型 它的 擴展

簡單線性回歸

線性回歸是數據挖掘中的基礎算法之一,從某種意義上來說,在學習函數的時候已經開始接觸線性回歸了,只不過那時候並沒有涉及到誤差項。線性回歸的思想其實就是解一組方程,得到回歸函數,不過在出現誤差項之後,方程的解法就存在了改變,一般使用最小二乘法進行計算。

使用sklearn.linear_model.LinearRegression進行線性回歸

sklearn對Data Mining的各類算法已經有了較好的封裝,基本可以使用fitpredictscore來訓練、評價模型,並使用模型進行預測,一個簡單的例子如下:

>>> from sklearn import linear_model
>>> clf = linear_model.LinearRegression()
>>> X = [[0,0],[1,1],[2,2]]
>>> y = [0,1,2]
>>> clf.fit(X,y)
>>> print(clf.coef_)
[ 0.5 0.5]
>>> print(clf.intercept_)
1.11022302463e-16

LinearRegression已經實現了多元線性回歸模型,當然,也可以用來計算一元線性模型,通過使用list[list]傳遞數據就行。下面是LinearRegression的具體說明。

使用方法

實例化

sklearn一直秉承著簡潔為美得思想設計著估計器,實例化的方式很簡單,使用clf = LinearRegression()就可以完成,但是仍然推薦看一下幾個可能會用到的參數:

  • fit_intercept:是否存在截距,默認存在
  • normalize:標準化開關,默認關閉

還有一些參數感覺不是太有用,就不再說明了,可以去官網文檔中查看。

回歸

其實在上面的例子中已經使用了fit進行回歸計算了,使用的方法也是相當的簡單。

  • fit(X,y,sample_weight=None)X,y以矩陣的方式傳入,而sample_weight則是每條測試數據的權重,同樣以array格式傳入。
  • predict(X):預測方法,將返回預測值y_pred
  • score(X,y,sample_weight=None):評分函數,將返回一個小於1的得分,可能會小於0

方程

LinearRegression將方程分為兩個部分存放,coef_存放回歸系數,intercept_則存放截距,因此要查看方程,就是查看這兩個變量的取值。

多項式回歸

其實,多項式就是多元回歸的一個變種,只不過是原來需要傳入的是X向量,而多項式則只要一個x值就行。通過將x擴展為指定階數的向量,就可以使用LinearRegression

進行回歸了。sklearn已經提供了擴展的方法——sklearn.preprocessing.PolynomialFeatures。利用這個類可以輕松的將x擴展為X向量,下面是它的使用方法:

>>> from sklearn.preprocessing import PolynomialFeatures
>>> X_train = [[1],[2],[3],[4]]
>>> quadratic_featurizer = PolynomialFeatures(degree=2)
>>> X_train_quadratic = quadratic_featurizer.fit_transform(X_train)
>>> print(X_train_quadratic)
[[ 1  1  1]
 [ 1  2  4]
 [ 1  3  9]
 [ 1  4 16]]

經過以上處理,就可以使用LinearRegression進行回歸計算了。

sklearn學習筆記之簡單線性回歸