1. 程式人生 > >二、sklearn實現線性回歸

二、sklearn實現線性回歸

權重 好的 load 樣本 sets select 表示 ets 特征

1、簡單線性回歸概念

簡單線性回歸通過擬合線性方程y=wx+b得到預測值,通過取得預測值和真實值的最小差距,得到w和b的值。

  公式:J(w,b)min=Σ(yi-yipre)2=∑(yi-wxi+b)2,即公式取最小值

2、通過最小二乘法求解w和b

  • w = ∑(xi-xmean)(yi-ymean)/∑*(xi-xmean)
  • b = ymean-axmean
  • 向量化公式:w = XY/XX
技術分享圖片
import numpy as np
from sklearn import datasets

from sklearn.model_selection import
train_test_split # 導入線性回歸庫 from sklearn.linear_model import LinearRegression boston = datasets.load_boston() a = boston.data y = boston.target a = a[y<50.0] y = y[y<50.0] X_train, X_test, y_train, y_test = train_test_split(a, y, random_state=666) lin_reg = LinearRegression() lin_reg.fit(X_train, y_train)
# 權重系數 lin_reg.coef_ # 截距 lin_reg.intercept_ # R2準確率 lin_reg.score
View Code

3、線性回歸準確性的衡量標準

  一般J(w,b)值最小時預測準確率最高,但考慮樣本集的數量,如:10000個樣本誤差為1000,100個樣本誤差為500,這樣誤差為1000的預測效果好,所以要去掉樣本集的影響。

  • 均方誤差:MSE=J(w,b)/m
  • 均方根誤差:RMSE=sqrt(MSE)
  • 平均絕對值誤差:MAE=∑|yi-yipre|/m  

4、最好的線性回歸準確性的衡量標準R Squared

  公式:R2=1-∑(yi

-yipre)2/∑(ymean-yi)2

  分子:表示自定義模型預測產生的誤差

  分母:使用y=ymean基準模型預測產生的誤差

  公式表示自定義模型對比基準模型的百分比

  R2<=1且值越大表示自定義模型預測的效果越好

  R2<0表面自定義模型預測效果極差,不如基準模型,數據之間大概率不是線性關系

  R2分子分母同時除以樣本m得到:R2 = 1-MSE(ypre-y)/var(y) (var是方差)

技術分享圖片
import numpy as np
from sklearn import datasets

from sklearn.model_selection import train_test_split

# 導入線性回歸庫
from sklearn.linear_model import LinearRegression

# 導入(MSE)
from sklearn.metrics import mean_squared_error

# 導入(MAE)
from sklearn.metrics import mean_absolute_error

# 導入(R2)
from sklearn.metrics import r2_score

boston = datasets.load_boston()

a = boston.data
y = boston.target
a = a[y<50.0]
y = y[y<50.0]

X_train, X_test, y_train, y_test = train_test_split(a, y, random_state=666)

lin_reg = LinearRegression()

lin_reg.fit(X_train, y_train)

MSE = mean_squared_error(y, y_calculate)

MAE = mean_absolute_error(y, y_calculate)

# RMSE
RMSE = np.sqrt(MSE)

# R2
r2_score(y, y_calculate)
View Code

5、多元線性回歸

  一個樣本具有N個特征值:y = b + w1x1 + w2x2 + ...+ wmxm

6、線性回歸模型的解釋

  w系數的正負分別代表正負相關,數值大小代表相關程度

二、sklearn實現線性回歸