資源簡介
代碼功能介紹在《初探 嶺回歸 LASSO回歸 (python 實現)》中有詳細的介紹,文章中若有不正確的,也希望能夠不吝賜教,相互學習。
代碼片段和文件信息
#?-*-?coding:utf-8?-*-
#?@FileName??:Ridge&Lasso.py
#?@Time??????:2020/9/26?20:55
#?@Author????:ChuYali
import?numpy?as?np
import?matplotlib.pyplot?as?plt
from?sklearn.linear_model?import?RidgeRidgeCVLassoLassoCV
from?sklearn.metrics?import?mean_squared_error
#?
#?實現嶺回歸和Lasso回歸,并進行對比
#?問題描述:模型?y=x*b+a?。給定x,y預測b。
#?整體思路:
#?0.?初始化,設置全局參數:n為數據總量,dim為維度
#?1。隨機生成n*dim維的x,dim*1維的系數b和a,求出y值
#?2.?隨機生成模型參數Lambda,確定回歸模型,得到模型系數B和Lambda的圖像
#?3.?通過驗證,確定最優回歸模型的Lambda值
#?4.?基于最優的Lamma建模,并給定xy?確定系數_B
#?5.?評估真實系數b和模型系數B的MSE
#?
seed?=?np.random.seed(1)??#?random?seed
def?ini_data(ndim):
????‘‘‘
????初始化數據
????:param?n:?數據總量
????:param?dim:?參數維度
????:return:?x,y,b(系數)
????‘‘‘
????x?=?np.random.uniform(-100100(ndim))
????b?=?np.random.rand(dim)
????a?=?np.random.rand(n)
????y=np.matmul(xb)+a
????return?xyb
def?reg_model_Ridge(xyalphasdim):
????‘‘‘
????;嶺回歸估計
????:param?x:
????:param?y:
????:param?alphas:?隨機生成多個模型參數Lambda
????:param?dim:維度
????:return:?ridge_B?最優模型的系數
????‘‘‘
????model_coff=[]
????for?alpha?in?alphas:
????????ridge?=?Ridge(alpha=alphanormalize=True)
????????ridge.fit(xy)
????????model_coff.append(ridge.coef_)
????#?if?dim<=10:
????plot_data(alphas?model_coff?‘Log?Alpha‘?‘Cofficients‘?‘alpha系數與嶺回歸系數的關系?dim=‘+str(dim))
????#?交叉驗證,找到模型最優的Lambda值
????ridge_cv=?RidgeCV(alphas=alphasnormalize=Truescoring=“neg_mean_absolute_error“?cv=5)
????ridge_cv.fit(xy)
????ridge_best_lambda?=?ridge_cv.alpha_
????#?建立最優模型
????ridge?=?Ridge(alpha=ridge_best_lambdanormalize=True)
????ridge.fit(xy)
????#?得到最優模型的系數
????ridge_B?=?ridge.coef_
????return?ridge_B
def?reg_model_LASSO(xyalphasdim):
????‘‘‘
????;LASSO?回歸
????:param?x:
????:param?y:
????:
- 上一篇:python簡單神經網絡
- 下一篇:python大作業 五子棋 人人對戰
評論
共有 條評論