首页 > 解决方案 > 使用 tfidf.vectorizer 后如何获取每个类的单词的最高 tf-idf 值

问题描述

所以我有一个带有 3 个标签的数据集:足球、音乐和电影我使用 tfidf.vectorizer 然后逻辑回归来训练我的模型,现在我想获得每个标签具有最高 tfidf 的 5 个单词的列表。(足球最高 5 分,音乐最高 5 分……)我找不到获得它们的方法。

这是我拥有的代码

le = preprocessing.LabelEncoder()
y = le.fit_transform(data["Label"])
tfidf = TfidfVectorizer(analyzer = 'word')
X = tfidf.fit_transform(data["text"])

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.1)
lr = LogisticRegression()
lr.fit(X_train, y_train)
lr.score(X_test,y_test)

谢谢您的帮助。

标签: pythonpandasscikit-learnnlptokenize

解决方案


这不是 TFIDF 的工作方式。矢量化器计算每个文档的单词分数,而不是类别。

要获得每个文档的分数,请使用

X.nonzero()

如果您想获得每个类别的 TFIDF 分数,那么我建议将同一类别中的所有文本汇集到一个文档中并再次运行 TF-IDF。


推荐阅读