特徵選擇 wrapper,Embedded

2021-10-04 18:56:49 字數 2528 閱讀 8189

遞迴特徵消除法:

資料集:

利用遞迴特徵消除法(rfe)選擇特徵

from sklearn.feature_selection import rfe

from sklearn.linear_model import logisticregression

x_rfe=rfe(estimator=logisticregression(

), n_features_to_select=3)

.fit(x, y)

#指定保留特徵數為3,基模型為邏輯回歸

print

( x_rfe.support_ )

print

( x_rfe.ranking_ )

x_rfe.support_ 表示按特徵對應位置展示所選特徵,true表示保留,false表示剔除。

x_rfe.ranking_中ranking_[i]對應於第i個特徵的排名位置,1表示最優特徵。

輸出:

[

false

true

true

true][

2111

]該方法輸出需要保留的3個特徵分別是第2、3、4個。

embedded,也稱嵌入法,相比前兩種方法要更加複雜,它利用機器學習演算法和模型進行訓練,得到各個特徵的權值係數,根據權值係數從大到小來選擇特徵。

常用嵌入法技術:

基於線性回歸模型方法:

對於滿足回歸關係的資料分布,可以利用回歸模型的係數來選擇特徵,就是利用了越是重要的特徵,在模型中對應的係數就會越大,而跟輸出變數越是無關的特徵,對應的係數就會越接近於0這一特點。

基於l1的正則化方法:

正則化是一種回歸的形式,它將係數估計(coefficient estimate)朝零的方向進行約束、調整或縮小。也就是說,正則化可以在學習過程中降低模型複雜度和不穩定程度,從而避免過擬合的危險。正則化(regularization)包括l1、l2正則化。在原始的代價函式後面加上乙個l1正則化項,即所有權重w的絕對值的和,再乘以λ,引數 λ 起到了權衡的作用。

正則化特點:

1.l1正則化將回歸係數?_j的l1範數作為懲罰項加到損失函式上,由於正則項非零,這就迫使那些弱的特徵所對應的係數變成0。因此l1正則化往往會使學到的模型很稀疏(係數w經常為0),這個特性使得l1正則化成為一種很好的特徵選擇方法。

2.l1正則化像非正則化線性模型一樣也是不穩定的,如果特徵集合中具有相關聯的特徵,當資料發生細微變化時也有可能導致很大的模型差異。

3. l1正則化能夠生成稀疏的模型。

基於隨機森林的嵌入方法:

隨機森林提供的兩種常用特徵選擇的方法:

#呼叫相關模組

from sklearn.preprocessing import standardscaler

from sklearn.datasets import load_boston

from sklearn.linear_model import lasso

from pandas import dataframe as df

scaler= standardscaler(

)boston = load_boston(

)x = scaler.fit_transform(boston[

"data"])

y = boston[

"target"

]#以資料框形式檢視資料,先定義乙個資料框型別的變數

boston_df=pd.concat(

[df(x,columns=boston.feature_names)

,df(y,columns=

['target'])

],axis=1)

# 隨機按列檢視資料框的5行

#匯入到正則化模型並訓練資料

lasso = lasso(alpha=1)

#float, 可選,預設 1.0。當 alpha 為 0 時演算法等同於普通最小二乘法,不建議將 alpha 設為 0。

lasso.fit( x, y )

#檢視各特徵對應係數,非零係數即為保留特徵,系數值越大的特徵越重要

for i in

range

( x.shape[1]

):#讀取矩陣的一維長度

print

( boston.feature_names[i]

,format

( lasso.coef_[i]

, '.

3f『 )

)

特徵選擇 單變數特徵選擇

1.selectkbest可以依據相關性對特徵進行選擇,保留k個評分最高的特徵。方差分析 分類問題使用f classif,回歸問題使用f regression。f classif 分類任務 跟目標的分類,將樣本劃分成n個子集,s1,s2,sn,我們希望每個子集的均值 1,2,n不相等。我們假設h0 ...

特徵工程之特徵選擇

在前一篇文章中我介紹了一些資料預處理的方法,原始資料在經過預處理之後可以被演算法處理了,但是實際中可能有一些特徵是沒有必要的,比如在中國採集的一些資料,那麼國籍就都是中國,其實也就沒有意義了,反映在統計量上就是方差過小,也就是樣本在這個特徵上變化很小。還有一種情況是特徵和最後的結果相關性很小,也就是...

特徵工程之特徵選擇

特徵選擇其實就是減少屬性個數,為什麼要這麼做呢?直接使用原始資料來訓練模型的話,雖然說在訓練模型上的準確率會非常高,但是在測試樣本上的準確率將會大打折扣,也就是會產生過擬合的現象。所以說需要選擇出最適合的屬性進行訓練。特徵選擇的原因 2 雜訊 部分特徵對 結果又影響 進行特徵選擇的時候有兩種情況 一...