Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scikit learn 将X.toarray反转为sklearn中的计数向量器_Scikit Learn - Fatal编程技术网

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