簡體   English   中英

scikit功能重要性選擇經驗

[英]scikit feature importance selection experiences

Scikit-learn有一種使用極端隨機樹對特征(分類)進行排名的機制。

forest = ExtraTreesClassifier(n_estimators=250,
                          compute_importances=True,
                          random_state=0)

我有一個問題,如果這種方法是做一個“單變量”或“多變量”功能排名。 單變量情況是將各個特征相互比較的地方。 我會在此澄清一些澄清。 我應該嘗試其他任何參數嗎? 這種排名方法的任何經驗和陷阱也值得贊賞。 此排名的輸出識別特征編號(5,20,7。我想檢查特征編號是否真的對應於特征矩陣中的行。即,特征編號5對應於特征矩陣中的第六行。 (從0開始)。

我不是專家,但這不是單變量的。 實際上,總特征重要性是根據每棵樹的特征重要性計算的(取我認為的平均值)。

對於每棵樹,重要性是根據分裂的雜質計算

我使用這種方法,它似乎給出了良好的結果,從我的觀點來看比單變量方法更好。 但除了數據集的知識外,我不知道測試結果的任何技術。

要正確使用該功能,您應該遵循此示例並稍微修改它以使用pandas.DataFrame及其正確的列名:

import numpy as np

from sklearn.ensemble import ExtraTreesClassifier

X = pandas.DataFrame(...)
Y = pandas.Series(...)

# Build a forest and compute the feature importances
forest = ExtraTreesClassifier(n_estimators=250,
                              random_state=0)

forest.fit(X, y)

feature_importance = forest.feature_importances_
feature_importance = 100.0 * (feature_importance / feature_importance.max())
sorted_idx = np.argsort(feature_importance)[::-1]
print "Feature importance:"
i=1
for f,w in zip(X.columns[sorted_idx], feature_importance[sorted_idx]):
    print "%d) %s : %d" % (i, f, w)
    i+=1
pos = np.arange(sorted_idx.shape[0]) + .5
plt.subplot(1, 2, 2)
nb_to_display = 30
plt.barh(pos[:nb_to_display], feature_importance[sorted_idx][:nb_to_display], align='center')
plt.yticks(pos[:nb_to_display], X.columns[sorted_idx][:nb_to_display])
plt.xlabel('Relative Importance')
plt.title('Variable Importance')
plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM