筆者介紹
曾擔任零售企業項目負責人,負責企業數據化轉型,數據化管理;曾服務中國移動,負責客服部門產品推薦模型組組長;現於某金融投資公司大數據中心,負責風控數據建設,風控建模工作。在除工作外,也喜歡在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條
切分數據集
# 按照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迴歸結果:
嶺迴歸結果:
閱讀更多 Ai機器學習 的文章