Scikit learn 将X.toarray反转为sklearn中的计数向量器
我在这里提供以下文档: 假设我已经有了一个术语频率矩阵,如Scikit learn 将X.toarray反转为sklearn中的计数向量器,scikit-learn,Scikit Learn,我在这里提供以下文档: 假设我已经有了一个术语频率矩阵,如X.toarray()中给出的,但我没有使用CountVectorizer来获得它 我想对该矩阵应用TfIDF。有没有一种方法可以让我使用一个计数数组+一个字典,并将这个函数的一些逆函数作为构造函数来得到一个fit_变换的X 我在找 >>> print(X.toarray()) [[0 1 1 1 0 0 1 0 1] [0 2 0 1 0 1 1 0 1] [1 0 0 1 1 0 1 1 1] [0 1 1
X.toarray()
中给出的,但我没有使用CountVectorizer来获得它
我想对该矩阵应用TfIDF。有没有一种方法可以让我使用一个计数数组+一个字典,并将这个函数的一些逆函数作为构造函数来得到一个fit_变换的X
我在找
>>> print(X.toarray())
[[0 1 1 1 0 0 1 0 1]
[0 2 0 1 0 1 1 0 1]
[1 0 0 1 1 0 1 1 1]
[0 1 1 1 0 0 1 0 1]]
>>> V = CountVectorizerConstructorPrime(array=(X.toarray()),
vocabulary=['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this'])
以便:
>>> V == X
True
由
CountVectorizer
构造的X
是一个压缩稀疏行(csr)格式的稀疏矩阵。因此,您可以使用适当的SciPy函数直接从任何字数矩阵构造它:
从scipy.sparse导入csr\u矩阵
V=csr_矩阵(X.toarray())
现在,V
和X
是相等的,尽管这可能并不明显,因为V==X
会给您另一个稀疏矩阵(或者抱怨矩阵不是稀疏的,尽管有预期的格式,请参阅)。但你可以这样检查:
(V!=X).toarray().any()
False
请注意,不需要单词列表,因为矩阵只对所有不同单词的频率进行编码,不管它们是什么
>>> V == X
True