TfidfVectorizer中'max_features'的用途是什么

时间:2018-07-05 21:23:01

标签: scikit-learn tfidfvectorizer

据我了解,如果max_feature = n;这意味着它正在根据Tf-Idf值选择前n个Feature。我在scikit-learn上浏览了TfidfVectorizer的文档,但并没有正确理解它。

1 个答案:

答案 0 :(得分:0)

如果您想要具有最高tfidf值的按行单词,则需要从Vectorizer访问转换后的tf-idf矩阵,逐行(逐个文档)对其进行访问,然后对值进行排序以获取这些值。

类似这样的东西:

# TfidfVectorizer will by default output a sparse matrix
tfidf_data = tfidf_vectorizer.fit_transform(text_data).tocsr()
vocab = np.array(tfidf_vectorizer.get_feature_names())

# Replace this with the number of top words you want to get in each row
top_n_words = 5

# Loop all the docs present
for i in range(tfidf_data.shape[0]):
    doc = tfidf_data.getrow(i).toarray().ravel()
    sorted_index = np.argsort(doc)[::-1][:top_n_words]
    print(sorted_index)
    for word, tfidf in zip(vocab[sorted_index], doc[sorted_index]):
        print("%s - %f" %(word, tfidf))

如果您可以使用熊猫,那么逻辑会变得更简单:

for i in range(tfidf_data.shape[0]):
    doc_data = pd.DataFrame({'Tfidf':tfidf_data.getrow(i).toarray().ravel(),
                             'Word': vocab})
    doc_data.sort_values(by='Tfidf', ascending=False, inplace=True)
    print(doc_data.iloc[:top_n_words])