我不是专家,但这不是单变量的。事实上,总特征重要性是根据每棵树的特征重要性计算的(取我认为的平均值)。
对于每棵树,重要性是根据split 的杂质计算的。
我使用了这种方法,它似乎给出了很好的结果,从我的角度来看比单变量方法更好。但除了数据集的知识外,我不知道任何测试结果的技术。
要正确订购该功能,您应该遵循此示例并对其进行一些修改,以便使用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()