sklearn中的Tfidfvectorizer - 如何获取矩阵

3
我想从sklearn的Tfidfvectorizer对象中获取矩阵。这是我的代码:
from sklearn.feature_extraction.text import TfidfVectorizer
text = ["The quick brown fox jumped over the lazy dog.",
        "The dog.",
        "The fox"]

vectorizer = TfidfVectorizer()
vectorizer.fit_transform(text)

这是我尝试过的,但出现了错误:

vectorizer.toarray()
--------------------------------------------------------------------------- 
AttributeError                            Traceback (most recent call last) <ipython-input-117-76146e626284> in <module>()   
----> 1 vectorizer.toarray()

AttributeError: 'TfidfVectorizer' object has no attribute 'toarray'

另一个尝试

vectorizer.todense()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-118-6386ee121184> in <module>()
----> 1 vectorizer.todense()

AttributeError: 'TfidfVectorizer' object has no attribute 'todense'
2个回答

5
请注意vectorizer.fit_transform返回的是您想要获取的术语-文档矩阵。因此,请保存其返回值,并使用todense,因为它将以稀疏格式存在:

返回值: X:稀疏矩阵,[n_samples,n_features]。 Tf-idf加权文档术语矩阵。

a = vectorizer.fit_transform(text)
a.todense()

matrix([[0.36388646, 0.27674503, 0.27674503, 0.36388646, 0.36388646,
         0.36388646, 0.36388646, 0.42983441],
        [0.        , 0.78980693, 0.        , 0.        , 0.        ,
         0.        , 0.        , 0.61335554],
        [0.        , 0.        , 0.78980693, 0.        , 0.        ,
         0.        , 0.        , 0.61335554]])

2

.fit_transform 本身返回一个文档术语矩阵。因此,您需要执行以下操作:

matrix = vectorizer.fit_transform(text)

matrix.todense()用于将稀疏矩阵转换为密集矩阵。
matrix.shape可以给出矩阵的形状。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接