我有一组与二进制类标签相关的特征向量,
每个都有大约40000个功能。我使用来自sklearn
的RandomForestClassifier
训练一个随机森林分类器,大约需要10分钟。不过,我想看看哪些是最重要的功能。在
我试着简单地打印出clf.feature_importances_
,但这需要
每个功能约1秒,总共约40000秒(约12小时)。这个
比训练分类器所需的时间长得多
第一名!在
有没有更有效的方法来找出哪些特性是最重要的?在
我的意思是:
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(n_estimators=50)
clf = clf.fit(X, Y)
for i in xrange(len(clf.feature_importances_)):
print clf.feature_importances_[i]
您需要做的就是将
clf.feature_importances_
的结果存储在一个数组中,然后使用它打印出结果。比如:现在处理它的方法是每次都重新计算数组。在
我将建议一个小的变体,它可以自动解决问题,因为它只得到
feature_importances_
一个:如果需要循环索引
^{pr2}$i
,只需使用enumerate
:这也是比使用
我认为如果
RandomForestClassifier
在幕后跟踪它的状态会更好。如果状态发生变化(例如,n_estimators
被更改,或者其他参数),它应该重新计算feature_importances_
(像现在一样动态)。否则,它应该只返回当前缓存的功能重要性。然而,这在幕后更为复杂。在
也许最简单的方法是将属性更改为实际的方法:
calc_feature_importances()
。再说一次,我没有把精力放在创建
RandomForestClassifier
上,所以我不能抱怨。在相关问题 更多 >
编程相关推荐