遞迴特徵消除法:
資料集:
利用遞迴特徵消除法(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 雜訊 部分特徵對 結果又影響 進行特徵選擇的時候有兩種情況 一...