[英]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.