首页 > 解决方案 > 我可以将熊猫数据框输入“TfidfVectorizer”吗?如果是这样,我如何找出我的数据框中有多少文档?

问题描述

这是原始数据:

原始数据

这是将数据读入熊猫数据框后的前半部分数据: 熊猫数据框

我正在尝试运行TfidfVectorizer,但我不断收到以下错误:

ValueError: After pruning, no terms remain. Try a lower min_df or a higher max_df.

我看到这篇文章说当值max_df小于. 我尝试了几种变体,其中我的值大于我的值,但仍然得到相同的错误。因此,我认为该错误可能与我的数据在 pandas 数据框中的存储方式有关。我在正确的轨道上吗?如果是这样,我如何找出我的数据框中有多少个文档?如果没有,我该如何解决这个问题?min_dfTfidfVectorizermax_dfmin_df

这是我的代码:

tfidf_vectorizer = TfidfVectorizer(max_df=0.5, min_df=0, stop_words=None)
tfidf = tfidf_vectorizer.fit_transform(df)

另外,这是我正在处理的示例:

tfidf_vectorizer = TfidfVectorizer(max_df=0.95, min_df=2,
                                   max_features=n_features,
                                   stop_words='english')

在上面的例子中,min_df大于max_df。我试着这样做,但得到以下错误:

ValueError: max_df corresponds to < documents than min_df

标签: pythonscikit-learnsklearn-pandastopic-modelingtfidfvectorizer

解决方案


您应该将一列数据传递给fit_transform函数。这是示例

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
words = ['trust inten other','feel comfort express view']
df = pd.DataFrame(words,columns = ['words'])
tfidf_vectorizer = TfidfVectorizer(max_df=0.5, min_df=0, stop_words=None)
# right
tfidf = tfidf_vectorizer.fit_transform(df['words'])
# wrong
# tf_idf = tf_idf_vectorizer.fit_transform(df)

当您传递dffit_transform函数时,它将['words']作为输入,而不是['trust inten other','feel comfort express view']示例中显示的那样。


推荐阅读