Python CountVectorizer:transform方法在单个文本行上返回多维数组

Python CountVectorizer:transform方法在单个文本行上返回多维数组,python,python-2.7,text,scikit-learn,sklearn-pandas,Python,Python 2.7,Text,Scikit Learn,Sklearn Pandas,首先,我把它放在短信语料库中: from sklearn.feature_extraction.text import CountVectorizer clf = CountVectorizer() X_desc = clf.fit_transform(X).toarray() 看起来效果不错: X.shape = (5574,) X_desc.shape = (5574, 8713) 但后来我将transform方法应用于文本行,正如我们所知,它的结果应该是(,8713)形状,但我们看到:

首先,我把它放在短信语料库中:

from sklearn.feature_extraction.text import CountVectorizer
clf = CountVectorizer()
X_desc = clf.fit_transform(X).toarray()
看起来效果不错:

X.shape = (5574,)
X_desc.shape = (5574, 8713)
但后来我将transform方法应用于文本行,正如我们所知,它的结果应该是(,8713)形状,但我们看到:

str2 = 'Have you visited the last lecture on physics?'
print len(str2), clf.transform(str2).toarray().shape
52(528713)


这是怎么回事?还有一件事-所有数字都是零

您始终需要将数组或向量传递给
变换
;如果只想转换单个元素,则需要传递一个单例数组,然后提取其内容:

clf.transform([str1])[0]

顺便说一句,将二维数组作为输出的原因是字符串实际上存储为字符列表,因此矢量器将字符串视为数组,其中每个字符都被视为单个文档。

始终需要将数组或向量传递给
transform
;如果只想转换单个元素,则需要传递一个单例数组,然后提取其内容:

clf.transform([str1])[0]

顺便说一句,将二维数组作为输出的原因是字符串实际上存储为字符列表,因此矢量器将字符串视为数组,其中每个字符都被视为单个文档。

clf.transform(str1)中什么是
str1
?在
clf.transform(str1)
中什么是
str1