python - 如何获得 tf-idf 分类器的最佳特征?

标签 python scikit-learn tf-idf feature-selection tfidfvectorizer

我有一个评论(文本)列表,我必须使用一些分类器(输入)对其进行分类。 我使用 pipeline 来执行此操作,并且使用 KFold 因为数据集非常小。 我想知道 SelectKBest 分类器的最佳特征的名称,但由于它位于 pipeline 中,我不知道如何获得最佳特征名称。

comments 是一个字符串列表。

def classify(classifiers, folder="tfidf-classifiers"):
    comments = get_comments()
    labels = get_labels()

    tfidf_vector = TfidfVectorizer(tokenizer=tokenizer, lowercase=False)
    stats = {}
    for i in classifiers:
        classifier = i()
        pipe = Pipeline(
            [('vectorizer', tfidf_vector), ('feature_selection', SelectKBest(chi2)), ('classifier', classifier)])

        result = cross_val_predict(pipe, comments, labels, cv=KFold(n_splits=10, shuffle=True))

        cm = confusion_matrix(result, labels, [information, non_information])
        saveHeatmap(cm, i.__name__, folder)

        report = classification_report(labels, result, digits=3, target_names=['no', 'yes'], output_dict=True)

        stats[i.__name__] = report
    return stats

我在互联网上搜索并发现了这个:

 pipe.named_steps['feature_selection'].get_support()

但我不能这样做,因为我没有在管道上调用 fit 。我在这里使用管道:

 result = cross_val_predict(pipe, comments, labels, cv=KFold(n_splits=10, shuffle=True))

如何获得最好的 K 个功能名称?

我想要的是一个简单的列表,列出了对分类器完成工作“帮助最大”的单词...

最佳答案

来自 NLP in Python: Obtain word names from SelectKBest after vectorizing

from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(df["Notes"])

from sklearn.feature_selection import chi2
chi2score = chi2(X,df['AboveAverage'])[0]

wscores = zip(vectorizer.get_feature_names(),chi2score)
wchi2 = sorted(wscores,key=lambda x:x[1]) 
topchi2 = zip(*wchi2[-20:])
show=list(topchi2)

您可以使用 f_classif 或其他方法轻松更改评分。

关于python - 如何获得 tf-idf 分类器的最佳特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60786742/

相关文章:

python - 如何在 python 中使用 opencv 对图像进行校正?

python - RandomForestRegressor 和 feature_importances_ 错误

Python TfidfVectorizer 抛出 : empty vocabulary; perhaps the documents only contain stop words"

graph-databases - gremlin中的TF-IDF算法

java - 为 Lucene (PyLucene) 中的每个文档获取 TFIDF 得分最高的 N 个术语

python - 根据条件对数据帧进行排序,并通过动态分配给随机向量来返回所有组

python - flask-werkzeug 的 Virtualenv 问题

python - 使用 Brian2 库时获取空白图

machine-learning - 使用 Scorer 对象进行分类器评分方法

python - 导入仅在 Python 函数内部起作用