sklearn之LASSO算法應用

sklearn之LASSO算法應用

前言: 本文介紹LASSO算法理論以及sklearn中Lasso算法如何調用和使用

一、LASSO算法和嶺迴歸算法對比
•Tibshirani(1996)提出了Lasso(The Least Absolute Shrinkage and
Selectionator operator)算法。
• 通過構造一個一階懲罰函數獲得一個精煉的模型;通過最終確定一些
指標(變量)的係數爲零(嶺迴歸估計係數等於0的機會微乎其微,
造成篩選變量困難),解釋力很強。
• 擅長處理具有多重共線性的數據,與嶺迴歸一樣是有偏估

在這裏插入圖片描述
LASSO算法的代價函數和嶺迴歸的代價函數都是爲了防止過擬合,但是,嶺迴歸算法很難使得模型參數爲0,而LASSO算法可以使得模型中的很多參數(對於本數據模型訓練影響不大)爲0,進而使得模型的特徵要素減少

二、sklearn中應有LASSO算法示例代碼

import numpy as np
from numpy import genfromtxt
from sklearn import linear_model

# 讀取數據
data = genfromtxt(r'longley.csv', delimiter=',')

# 切分數據
x_data = data[1:, 2:]
y_data = data[1:, 1, np.newaxis]

# 訓練模型
model = linear_model.LassoCV()
model.fit(x_data, y_data)

# 訓練後選擇的lasso係數
print(model.alpha_)
# 訓練後線性模型參數
print(model.coef_)

# 預測值
print(model.predict(x_data[-2, np.newaxis]))
print(y_data[-2])  # 真實值

三、代碼執行結果

20.03464209711722
[0.10206856 0.00409161 0.00354815 0.         0.         0.        ]
[115.6461414]
[115.7]

由上面結果可知,LASSO算法會自動得到一個合適的λ值,並且其訓練出的模型中有很多參數爲0 ,可以認爲參數爲0的特徵是不重要的特徵,可以捨棄,進而簡化模型。

四、數據下載
鏈接:https://pan.baidu.com/s/14xi9nAW4DyY3mWFp_GTb0w
提取碼:3kf3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章