如何获得所选功能的分数?

时间:2017-04-17 12:46:07

标签: scikit-learn feature-selection

参考Map object is not subscriptable error 我用Moses Xu的答案来获取功能名称。它产生错误" Map对象不可订阅"。代码如下。我正在使用python 3.x

top_ranked_features = sorted(enumerate(ch2.scores_),key=lambda x:x[1], reverse=True)[:1000]
top_ranked_features_indices = map(list,zip(*top_ranked_features))[0]
for feature_pvalue in zip(np.asarray(train_vectorizer.get_feature_names())[top_ranked_features_indices],ch2.pvalues_[top_ranked_features_indices]):
    print( feature_pvalue).

错误出现在第二行代码中。

输出

('00 8b 4d fc', 3.4028916591534005e-61)
('51 00 22 05', 3.4028916591534005e-61)
('00 74 00 61', 8.3973527363656966e-61)

1 个答案:

答案 0 :(得分:0)

在python 3.x中,map返回迭代器而不是列表。因此,返回的对象不是可订阅的。 您可以将其更改为list(map(list,zip(*a)))[0]以解决问题。

编辑:

您还可以使用next(map(list,zip(*a)))不将分数加载到内存中,并使代码更加pythonic。