剛看到一篇介紹特徵篩選的文章,裡面介紹基於模型的特徵排名,附加了乙個隨機森林的python程式,感覺挺好,趕緊mark下來。
程式使用了skliearn機器學習庫,資料集為boston房屋**資料,源程式如下所示:
from
sklearn.cross_validation
import
cross_val_score, shufflesplit
from
sklearn.datasets
import
load_boston
from
sklearn.ensemble
import
randomforestregressor
#load boston housing dataset as an example
boston
=
load_boston()
x
=
boston[
"data"
]
y
=
boston[
"target"
]
names
=
boston[
"feature_names"
]
rf
=
randomforestregressor(n_estimators
=
20
, max_depth
=
4
)
scores
=
for
i
in
range
(x.shape[
1
]):
score
=
cross_val_score(rf, x[:, i:i
+
1
], y, scoring
=
"r2"
,
cv
=
shufflesplit(
len
(x),
3
, .
3
))
round
(np.mean(score),
3
), names[i]))
print
sorted
(scores, reverse
=
true
)
結果如下:
[(0.636, 'lstat'), (0.59, 'rm'), (0.472, 'nox'), (0.369, 'indus'), (0.311, 'ptratio'), (0.24, 'tax'), (0.24, 'crim'), (0.185, 'rad'), (0.16, 'zn'), (0.087, 'b'), (0.062, 'dis'), (0.036, 'chas'), (0.027, 'age')]
隨機森林特徵選擇
隨機森林具有準確率高 魯棒性好 易於使用等優點,這使得它成為了目前最流行的機器學習演算法之一。隨機森林提供了兩種特徵選擇的方法 mean decrease impurity 和mean decrease accuracy。隨機森林由多個決策樹構成。決策樹中的每乙個節點都是關於某個特徵的條件,為的是將...
xgboost和隨機森林特徵重要性計算方法
隨機森林中特徵重要性和xgboost不同 隨機森林中的特徵重要性主要是基於不純度 也可以叫做gini importance 計算某乙個節點不純度為 其中,k omega k k le ft omega left ri ght omega right 分別為節點k以及其左右子節點中訓練樣本個數與總訓練...
隨機森林進行特徵選取
在隨機森林中某個特徵x的重要性的計算方式如下 首先是對隨機森林的每一顆決策樹,使用對應的oob 袋外資料 資料來進行計算他的袋外的資料誤差,記做error1 這樣每個決策樹都可以得到乙個error1,k顆數就有k個error1.然後就是要遍歷所有的特徵,來考察該特徵的重要性,考察重要性的方式是,隨機...