日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Lasso回归实验

發(fā)布時(shí)間:2025/3/21 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lasso回归实验 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Lasso回歸實(shí)驗(yàn)

文章目錄

  • Lasso回歸實(shí)驗(yàn)
    • 實(shí)驗(yàn)說(shuō)明
    • 實(shí)驗(yàn)步驟
    • 參數(shù)優(yōu)化

實(shí)驗(yàn)說(shuō)明

數(shù)據(jù)集我們使用的是 sklearn包中自帶的波士頓房?jī)r(jià)數(shù)據(jù)集。

  • 實(shí)驗(yàn)環(huán)境:Pycharm
  • Python版本:3.6
  • 需要的第三方庫(kù):sklearn、numpy

實(shí)驗(yàn)步驟

一個(gè)簡(jiǎn)單的 Lasso 回歸實(shí)驗(yàn)還是那六個(gè)步驟:

  • 加載數(shù)據(jù)集
  • 拆分?jǐn)?shù)據(jù)集
  • 創(chuàng)建模型
  • 在訓(xùn)練集學(xué)習(xí)得到模型
  • 模型預(yù)測(cè)
  • 模型評(píng)測(cè)
  • 關(guān)于訓(xùn)練集和測(cè)試集的劃分我們使用的是留出法。至于參數(shù)設(shè)置,我們?cè)O(shè)置隨機(jī)種子為10,學(xué)習(xí)率為0.1,迭代次數(shù)為10000。

    最后的結(jié)果我們使用四項(xiàng)指標(biāo)來(lái)進(jìn)行評(píng)估:

    • 平均絕對(duì)誤差MAE
    • R2得分

    代碼如下:

    # Lasso回歸,Boston數(shù)據(jù)集from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.linear_model import Lasso from sklearn.metrics import mean_absolute_error, r2_score# 加載數(shù)據(jù)集 boston_data = load_boston() x = boston_data.data y = boston_data.target# 拆分?jǐn)?shù)據(jù)集 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=10)# 實(shí)例化Lasso模型 lasso = Lasso(alpha=0.1, max_iter=10000) # 訓(xùn)練模型 lasso.fit(x_train, y_train) # 輸出權(quán)重系數(shù) print("coef:", lasso.coef_) # 輸出截距 print("intercept:", lasso.intercept_)# 模型預(yù)測(cè) lasso_predict = lasso.predict(x_test)# 模型評(píng)估 print("MAE: ", mean_absolute_error(y_test, lasso_predict)) print("r2-score: ", r2_score(y_test, lasso_predict))

    可以看到,得到的指標(biāo)為:平均絕對(duì)誤差MAE為4.23,R2得分為0.64

    參數(shù)優(yōu)化

    我們發(fā)現(xiàn) R2得分確實(shí)有點(diǎn)低,只有 0.64。于是我們采用隨機(jī)參數(shù)搜索的方式進(jìn)行優(yōu)化。

    劃分時(shí)隨機(jī)種子設(shè)置為100。給超參數(shù)設(shè)置范圍,采用隨機(jī)參數(shù)選擇的方式,10折交叉驗(yàn)證,迭代次數(shù)為100,來(lái)獲得模型的最佳參數(shù)。

    用最佳參數(shù)重新生成模型,再訓(xùn)練模型進(jìn)行預(yù)測(cè)。

    如果想要弄明白隨機(jī)搜索的參數(shù)具體怎么設(shè)置,可以參考這一篇博客 sklearn——參數(shù)優(yōu)化

    代碼如下:

    # Lasso回歸,Boston數(shù)據(jù)集from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.model_selection import RandomizedSearchCV from sklearn.linear_model import Lasso from sklearn.metrics import mean_absolute_error, r2_score import numpy as np# 加載數(shù)據(jù)集 boston_data = load_boston() x = boston_data.data y = boston_data.target# 拆分?jǐn)?shù)據(jù)集 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=100)# 設(shè)置超參數(shù) alpha = [0.01, 0.005, 0.001, 0.0005, 0.0001, 0.02, 0.05, 0.1, 0.2, 0.5, 1] max_iter = [int(x) for x in np.linspace(start=1000, stop=10000, num=1000)] random_state = [int(x) for x in np.linspace(start=10, stop=300, num=10)] # 參數(shù)字典 params_dict = {'alpha': alpha,'max_iter': max_iter,'random_state': random_state }# 實(shí)例化Lasso模型 lasso = Lasso() # 隨機(jī)參數(shù)選擇 rsCV = RandomizedSearchCV(estimator=lasso,param_distributions=params_dict,n_iter=100,scoring='r2',cv=10 ) rsCV.fit(x_train, y_train) # 輸出參數(shù)信息 print("最佳度量值:", rsCV.best_score_) print("最佳參數(shù):", rsCV.best_params_) print("最佳模型:", rsCV.best_estimator_)# 用最佳參數(shù)生成模型 lasso = Lasso(alpha=rsCV.best_params_['alpha'], max_iter=rsCV.best_params_['max_iter'],random_state=rsCV.best_params_['random_state']) # 訓(xùn)練模型 lasso.fit(x_train, y_train) # 模型預(yù)測(cè) lasso_predict = lasso.predict(x_test)# 模型評(píng)估 print("MAE: ", mean_absolute_error(y_test, lasso_predict)) print("r2-score: ", r2_score(y_test, lasso_predict))

    可以看到,優(yōu)化后的模型明顯好于之前,平均絕對(duì)誤差MAE為3.25,R2得分為0.76

    總結(jié)

    以上是生活随笔為你收集整理的Lasso回归实验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。