选择特征后显示特征名称

16

我需要为文本构建一个分类器,现在我正在使用TfidfVectorizer和SelectKBest来选择特征,如下所示:

vectorizer = TfidfVectorizer(sublinear_tf = True, max_df = 0.5, stop_words = 'english',charset_error='strict')

X_train_features = vectorizer.fit_transform(data_train.data)
y_train_labels = data_train.target;

ch2 = SelectKBest(chi2, k = 1000)
X_train_features = ch2.fit_transform(X_train_features, y_train_labels)

我希望在选择了K个最佳特征之后打印出所选特征的名称(文本),有办法可以做到吗?我只需要打印出所选的特征名称,也许我应该使用CountVectorizer?

2个回答

17
以下应该可以正常工作:
np.asarray(vectorizer.get_feature_names())[ch2.get_support()]

9

在@ogrisel的回答上继续说明,返回的功能列表是在它们被矢量化时以相同顺序排列的。下面的代码将给出一个按Chi-2分数降序排序的排名前几个特征列表(以及相应的p值):

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接