溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何Python進行Lasso回歸選取關(guān)鍵特征

發(fā)布時間:2021-10-19 10:21:56 來源:億速云 閱讀:1750 作者:柒染 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關(guān)如何Python進行Lasso回歸選取關(guān)鍵特征,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。 

今天,分享一下Lasso回歸用于選取關(guān)鍵特征,數(shù)據(jù)探索性分析時,引入的特征太多,要直接用這些特征建模分析,需要對原始特征進一步篩選,只保留重要的特征,Lasso算法在模型系數(shù)絕對值之和小于某常數(shù)的條件下,謀求殘差平方和最小,在變量選取方面的效果優(yōu)于逐步回歸、主成分回歸、嶺回歸、偏最小二乘等,能較好的克服傳統(tǒng)方法在模型選取上的不足。

我們選取部分GDP指標如下所示:

如何Python進行Lasso回歸選取關(guān)鍵特征


       

Lasso回歸概念


Lasso回歸方法屬于正則化方法的一種,是壓縮估計。它通過構(gòu)造一個懲罰函數(shù)得到一個較對精煉的模型。使用它壓縮一些系數(shù),同時設(shè)定一些系數(shù)為零,保留了子集收縮的優(yōu)點,是一種處理具有復共線性數(shù)據(jù)的有偏估計。


 

Lasso基本原理


Lasso以縮小特征集(降階)為思想,是一種收縮估計方法。Lasso方法可以將特征的系數(shù)進行壓縮并使某些回歸系數(shù)變?yōu)?,進而達到特征選擇的目的,可以廣泛地應(yīng)用于模型改進與選擇。通過選擇懲罰函數(shù),借用Lasso思想和方法實現(xiàn)特征選擇的目的。模型選擇本質(zhì)上是尋求模型稀疏表達的過程,而這種過程可以通過優(yōu)化一個“損失”+“懲罰”的函數(shù)問題來完成。


 

Lasso參數(shù)估計定義


其中,為非負正則參數(shù),控制著模型的復雜程度。越大,對特征較多的線性模型的懲罰力度就越大,從而最終獲得一個特征較少的模型,稱為懲罰項。參數(shù)的確定可以采用交叉驗證法,選取交叉驗證誤差最小的值。最后,按照得到的值,用全部數(shù)據(jù)重新擬合模型即可。


 

Lasso適用場景


當原始特征中存在多重共線性時,Laso回歸不失為一種很好的處理共線性的方法,它可以有效地對存在多重共線性的特征進行篩選。在機器學習中,面對海量的數(shù)據(jù),首先想到的就是降維,爭取用盡可能少的數(shù)據(jù)解決問題,從這層意義上說,用Lasso模型進行特征選擇也是一種有效的降維方法。從理論上說,Lasso對數(shù)據(jù)類型沒有太多限制,可以接收任何類型的數(shù)據(jù),而且一般不需要對特征進行標準化處理。


 

Lasso回歸方法優(yōu)缺點


Lasso回歸方法的優(yōu)點是可以彌補最小二乘估計法和逐步回歸局部最優(yōu)估計的不足,可以很好地進行特征的選擇,有效地解決各特征之間存在多重共線性的問題。缺點是當存在一組高度相關(guān)的特征時,Lasso回歸方法傾向于選擇其中的一個特征,而忽視其他所有的特征,這種情況會導致結(jié)果的不穩(wěn)定性。雖然Lasso回歸方法存在弊端,但是在合適的場景中還是可以發(fā)揮不錯的效果的。

得出Lasso回歸后,各個特征的值如下表所示

如何Python進行Lasso回歸選取關(guān)鍵特征

用Lasso回歸,剔除值為0.000的系數(shù),得出,影響國內(nèi)生產(chǎn)總值的關(guān)鍵因素為,X1、X2、X3、X4、X5 、X6、X7、X8、X9、X11、X12,用這些特征進行下一步的研究。

如何Python進行Lasso回歸選取關(guān)鍵特征      

   

#Lasso模型程序

import numpy as np

import pandas as pd

from sklearn.linear_model import Lasso

inputfile = 'C:\\Users\\27342\\Desktop\\data.csv' #輸入的數(shù)據(jù)文件

data = pd.read_csv(inputfile) #讀取數(shù)據(jù)

lasso = Lasso(1000)  #調(diào)用Lasso()函數(shù),設(shè)置λ的值為1000

lasso.fit(data.iloc[:,0:12],data['y'])

print('相關(guān)系數(shù)為:',np.round(lasso.coef_,5))  #輸出結(jié)果,保留五位小數(shù)


## 計算相關(guān)系數(shù)非零的個數(shù)

print('相關(guān)系數(shù)非零個數(shù)為:',np.sum(lasso.coef_ != 0))


mask = lasso.coef_ != 0  #返回一個相關(guān)系數(shù)是否為零的布爾數(shù)組

print('相關(guān)系數(shù)是否為零:',mask)


outputfile = 'C:\\Users\\27342\\Desktop\\new_reg_data.csv'  #輸出的數(shù)據(jù)文件

new_reg_data = data.iloc[:, mask]  #返回相關(guān)系數(shù)非零的數(shù)據(jù)

new_reg_data.to_csv(outputfile)  #存儲數(shù)據(jù)

print('輸出數(shù)據(jù)的維度為:',new_reg_data.shape)  #查看輸出數(shù)據(jù)的維度


以上就是如何Python進行Lasso回歸選取關(guān)鍵特征,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI