簡單線性回歸
線性回歸是數據挖掘中的基礎算法之一,從某種意義上來說,在學習函數的時候已經開始接觸線性回歸了,只不過那時候並沒有涉及到誤差項。線性回歸的思想其實就是解一組方程,得到回歸函數,不過在出現誤差項之后,方程的解法就存在了改變,一般使用最小二乘法進行計算。
使用sklearn.linear_model.LinearRegression進行線性回歸
sklearn對Data Mining的各類算法已經有了較好的封裝,基本可以使用fit
、predict
、score
來訓練、評價模型,並使用模型進行預測,一個簡單的例子如下:
>>> 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
進行回歸計算了。