算法筆記(19)自動特征選擇及Python代碼實現(xiàn)

自動特征選擇常用方法包括使用單一變量法進(jìn)行特征選擇、基于模型的特征選擇、迭代式特征選擇。


自動特征選擇方法

使用單一變量法進(jìn)行特征選擇

SelectPercentile:自動選擇原始特征的百分比
SelectKBest:自動選擇K個最重要的特征

from sklearn.feature_selection import SelectPercentile
select = SelectPercentile(percentile=50)
select.fit(X_train_scaled, y_train)
X_train_selected = select.transform(X_train_scaled)
print('經(jīng)過縮放的特征形態(tài):{}'.format(X_train_scaled.shape))
print('特征選擇后的特征形態(tài):{}'.format(X_train_selected.shape))

經(jīng)過縮放的特征形態(tài):(2145, 23)
特征選擇后的特征形態(tài):(2145, 11)
對于噪聲特別多的數(shù)據(jù)集來說,進(jìn)行特征選擇之后模型評分會提高,而不是降低。


用圖像展示特征選擇的結(jié)果

基于模型的特征選擇

工作原理:先使用一個有監(jiān)督學(xué)習(xí)的模型對數(shù)據(jù)特征的重要性進(jìn)行判斷,然后把最重要的特征進(jìn)行保留,這一步用到的模型和最終用來預(yù)測分析的模型不一定是同一個。
可以用隨機(jī)森林回歸模型、L1正則化的線性模型進(jìn)行特征選擇

from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestRegressor
sfm = SelectFromModel(RandomForestRegressor(n_estimators=100, 
                                            random_state=38),
                     threshold='median')
sfm.fit(X_train_scaled, y_train)
X_train_sfm = sfm.transform(X_train_scaled)
print('基于隨機(jī)森林模型進(jìn)行特征后的數(shù)據(jù)形態(tài):{}'.format(X_train_sfm.shape))

基于隨機(jī)森林模型進(jìn)行特征后的數(shù)據(jù)形態(tài):(2145, 12)

迭代式特征選擇

遞歸特征剔除法(RFE)的功能就是基于若干個模型進(jìn)行特征選擇。在最開始RFE會用某個模型對特征進(jìn)行選擇,之后再建立兩個模型,其中一個對已經(jīng)選擇的特征進(jìn)行篩選,另外一個對剔除的模型進(jìn)行篩選,然后一直重復(fù)這個步驟,直到達(dá)到我們指定的特征數(shù)量。迭代式特征選擇對計算能力要求高。

from sklearn.feature_selection import RFE
rfe = RFE(RandomForestRegressor(n_estimators=100,
                                 random_state=38),
         n_features_to_select=12)
rfe.fit(X_train_scaled, y_train)
mask = rfe.get_support()
print(mask)

[ True True False False True False False True True False True True
False True True True True False False True False False False]

特征選擇后的數(shù)據(jù)集訓(xùn)練神經(jīng)網(wǎng)絡(luò)

X_train_rfe = rfe.transform(X_train_scaled)
X_test_rfe = rfe.transform(X_test_scaled)
mlpr_rfe = MLPRegressor(random_state=62, hidden_layer_sizes=(100,100),
                      alpha=0.001)
mlpr_rfe.fit(X_train_rfe, y_train)

RFE選擇特征后的模型得分:0.95
結(jié)果:模型得分比原始特征得分略高

想要完整代碼的朋友,可toutiao搜索“編程研究坊”關(guān)注后s信我,回復(fù)“算法筆記19“獲取

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容