python - ML - 特征选择后获取特征名称 - SelectPercentile,python

标签 python numpy machine-learning scikit-learn feature-extraction

我一直在为这个问题苦苦挣扎。 我的目标是利用我拥有的文本特征,找到其中最好的 5-10 个词来帮助我分类。因此,我正在运行 TfIdfVectorizer,目前选择 ~90 最好。但是,在缩小特征数量后,我看不到实际选择了哪些特征。

这是我的:

import pandas
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.feature_selection import SelectPercentile, f_classif

train=pandas.read_csv("train.tsv", sep='\t')
labels_train = train["label"]
documents = []

for i, row in train.iterrows():
    documents.append((row['boilerplate'][1:-1].lower()))

vectorizer = TfidfVectorizer(sublinear_tf=True, stop_words="english")
features_train_transformed = vectorizer.fit_transform(documents)

selector = SelectPercentile(f_classif, percentile=0.1)
selector.fit(features_train_transformed, labels_train)
features_train_transformed = selector.transform(features_train_transformed).toarray()

结果是 features_train_transformed 包含所选单词的每个文档每个单词的所有 tf​​idf 分数的矩阵,但是我不知道选择了哪些单词,并且类 SelectPercentile 无法使用“get_feature_names()”之类的方法。

这是必要的,因为我需要将这些特征添加到一堆数字特征中,然后才能进行训练和预测。

最佳答案

  • selector.get_support() 为您获取在您指定的百分位数范围内的列的 bool 数组
  • train.columns.values 应该为您提供原始数据框的完整列名列表
  • 用前者过滤后者应该会为您提供构成所选百分位范围的列的名称。

下面的代码(从工作代码中剪切粘贴)与您的非常相似,希望对您有所帮助

import numpy as np
selection = SelectPercentile(f_regression, percentile=2)
train_minus_target = train.drop("y", axis=1)
x_features = selection.fit_transform(train_minus_target, y_train)
columns = np.asarray(train_minus_target.columns.values)
support = np.asarray(selection.get_support())
columns_with_support = columns[support]

引用:
about get_support

关于python - ML - 特征选择后获取特征名称 - SelectPercentile,python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41724432/

相关文章:

python - 我如何从 Ap cisco 获取客户数量并将其保存在变量中?

python - 如何在 numpy 矩阵中使用这个复数?

python - 使用 GridsearchCV 调整参数未给出最佳结果

python - 在 Django 中,我有一个复杂的查询,我只需要通过外键获取唯一值,这可能吗?

python - [b, c][a < b < c] +'000' [a < c :] expression do? 是什么

python - 如何将 argmax 的 3D 数组转换为 2D 数组?

python - 在 Tensorflow 中打印张量的值

algorithm - 如何建立电影推荐系统?

Python 计算 CSV 中的行数并将每行传递给变量

python - np.reshape(x, (-1,1)) vs x[ :, np.newaxis]