機器學習系列-嶺迴歸&Lasso迴歸實例

筆者介紹

曾擔任零售企業項目負責人,負責企業數據化轉型,數據化管理;曾服務中國移動,負責客服部門產品推薦模型組組長;現於某金融投資公司大數據中心,負責風控數據建設,風控建模工作。在除工作外,也喜歡在DC、DF、天池、Kaggle參加一些比賽。機器學習方面,有一定經驗,願與各位分享我的所見所聞所想,與各位共同進步。

背景

本節是上一節的補充,長話短說正式開始。

工具:python

數據:sklearn boston數據集

迴歸對比

加載包

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston # 數據集
import warnings
warnings.filterwarnings('ignore')

獲取數據

boston = load_boston()
data = boston['data'] # 自變量
tag = boston['target'] # 因變量

train = pd.DataFrame(data,columns = boston['feature_names'])
train.head() # 查看前5條
機器學習系列-嶺迴歸&Lasso迴歸實例

train

切分數據集

# 按照7/3分,切分訓練集和測試集

from sklearn.model_selection import train_test_split

X_train,X_test,y_train,y_test = train_test_split(train,tag,test_size=0.3)

Lasso迴歸

訓練模型

from sklearn.linear_model import Lasso,LassoCV
lasso_model = Lasso(alpha=0)
lasso_model.fit(X_train,y_train)
lasso_model.intercept_

常數項

34.96418799738776

係數項

lasso_model.coef_

array([-1.19919178e-01, 5.72987550e-02, -5.72944321e-04, 3.10733953e+00,

-1.54141456e+01, 3.34103546e+00, 6.82197295e-03, -1.60447015e+00,

2.87849366e-01, -1.12510494e-02, -8.29993838e-01, 1.23529187e-02,

-5.54979548e-01])

R2得分

lasso_model.score(X_test,y_test)

0.7581409138375204

預測

predict_lasso = lasso_model.predict(X_test)

嶺迴歸

訓練模型

from sklearn.linear_model import Ridge,RidgeCV
Ridge_model = RidgeCV([0.1, 1.0, 10.0])
Ridge_model.fit(X_train,y_train)

常數項

Ridge_model.intercept_

36.10541844785573

係數項

Ridge_model.coef_

array([-1.20871429e-01, 5.71935816e-02, 4.56938008e-03, 3.23235488e+00,

-1.70457702e+01, 3.34022188e+00, 7.95820534e-03, -1.63737973e+00,

2.88983931e-01, -1.09687243e-02, -8.50817455e-01, 1.22566062e-02,

-5.51318511e-01])

R2得分

Ridge_model.score(X_test,y_test)

0.7578494354278809

預測

predict_Ridge = Ridge_model.predict(X_test)

線性迴歸

訓練模型

from sklearn.linear_model import LinearRegression
reg_model = LinearRegression()
reg_model.fit(X_train,y_train)

常數項

reg_model.intercept_

37.31595301702461

係數項

reg_model.coef_

array([-1.21569065e-01, 5.71104425e-02, 1.05894959e-02, 3.24822330e+00,

-1.85287339e+01, 3.31408142e+00, 9.40444349e-03, -1.66164006e+00,

2.90832366e-01, -1.07740018e-02, -8.71234048e-01, 1.21634944e-02,

-5.49911287e-01])

R2得分

reg_model.score(X_test,y_test)

0.7575118129530991

預測

predict_reg = reg_model.predict(X_test)

從R2結果看,此次預測嶺迴歸和Lasso迴歸的效果略好於線性迴歸,但是差距不明顯。抽取20各點查看,擬合結果在真實值附近,三個模型的擬合結果差距不大。

線性迴歸結果:

機器學習系列-嶺迴歸&Lasso迴歸實例

線性迴歸

Lasso迴歸結果:

機器學習系列-嶺迴歸&Lasso迴歸實例

lasso迴歸

嶺迴歸結果:

機器學習系列-嶺迴歸&Lasso迴歸實例

嶺迴歸

機器學習系列-嶺迴歸&Lasso迴歸實例


分享到:


相關文章: