机器学习Sklearn实战——其他线性模型
生活随笔
收集整理的這篇文章主要介紹了
机器学习Sklearn实战——其他线性模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
其他線性模型
嶺回歸
?
相比于傳統的ols,在梯度下降的時候多了一項-learning_rate*2aw。無論w是正還是負,都讓結果的絕對值變小(讓系數變小,防止過擬合)
正則化?
欠擬合:系數少,系數小簡單
過擬合:系數多,系數大復雜
?就是learning_rate一般取0.01?
lasso
彈性網絡
多任務套索
多任務彈性網?
最小角度回歸
import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error from sklearn import datasets # cv交叉驗證 from sklearn.linear_model import LinearRegression,Ridge,Lasso,ElasticNet,ElasticNetCV,LassoCV diabetes = datasets.load_diabetes() X = diabetes["data"] y = diabetes["target"] X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.15) #使用線性回歸 lr = LinearRegression() lr.fit(X_train,y_train) lr.score(X_test,y_test) y_ = lr.predict(X_test) mean_squared_error(y_test,y_)結果:
0.4954938521776219 3052.1767800521984 ####使用嶺回歸 ridge = Ridge(alpha=0.1) ridge.fit(X_train,y_train) y_ = ridge.predict(X_test)print(ridge.score(X_test,y_test)) mean_squared_error(y_,y_test)結果:?
0.4853455916799041 3113.5720379350823?數據不存在共線性的問題(官方提供的數據),因此線性回歸的效果比嶺回歸的效果要好
####使用ridgeCV,找最佳alpha ridgeCV = RidgeCV(alphas=np.linspace(0.01,5,50),scoring = "r2") ridgeCV.fit(X_train,y_train) y_ = ridgeCV.predict(X_test)print(ridge.score(X_test,y_test)) mean_squared_error(y_,y_test)結果:
0.4853455916799041 3117.234991068462 ridgeCV.alpha_結果:
0.11183673469387755 print(np.linspace(0.01,5,50)) #等差數列 print(np.logspace(0.01,5,50)) #等比數列 數字比較小的時候結果:
[0.01 0.11183673 0.21367347 0.3155102 0.41734694 0.519183670.62102041 0.72285714 0.82469388 0.92653061 1.02836735 1.130204081.23204082 1.33387755 1.43571429 1.53755102 1.63938776 1.741224491.84306122 1.94489796 2.04673469 2.14857143 2.25040816 2.35224492.45408163 2.55591837 2.6577551 2.75959184 2.86142857 2.963265313.06510204 3.16693878 3.26877551 3.37061224 3.47244898 3.574285713.67612245 3.77795918 3.87979592 3.98163265 4.08346939 4.185306124.28714286 4.38897959 4.49081633 4.59265306 4.6944898 4.796326534.89816327 5. ] [1.02329299e+00 1.29370940e+00 1.63558632e+00 2.06780797e+002.61424893e+00 3.30509292e+00 4.17850002e+00 5.28271453e+006.67872986e+00 8.44365757e+00 1.06749868e+01 1.34959693e+011.70624274e+01 2.15713612e+01 2.72718303e+01 3.44787109e+014.35900889e+01 5.51092486e+01 6.96724728e+01 8.80841888e+011.11361403e+02 1.40789877e+02 1.77995148e+02 2.25032320e+022.84499582e+02 3.59681721e+02 4.54731565e+02 5.74899375e+027.26822849e+02 9.18893768e+02 1.16172154e+03 1.46871921e+031.85684439e+03 2.34753591e+03 2.96789806e+03 3.75219771e+034.74375716e+03 5.99734709e+03 7.58221192e+03 9.58589468e+031.21190726e+04 1.53216706e+04 1.93705904e+04 2.44894816e+043.09610960e+04 3.91429057e+04 4.94868483e+04 6.25642915e+047.90975925e+04 1.00000000e+05]總結
以上是生活随笔為你收集整理的机器学习Sklearn实战——其他线性模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习Sklearn实战——手写线性回
- 下一篇: 机器学习Sklearn实战——其他线性回