首先,我把它放到sms语料库上:
from sklearn.feature_extraction.text import CountVectorizer
clf = CountVectorizer()
X_desc = clf.fit_transform(X).toarray()
似乎工作良好:
X.shape = (5574,)
X_desc.shape = (5574, 8713)
然后我对textline应用了变换方法,正如我们所知道的,它应该有(,8713)形状,但是我们看到的是:
str2 = 'Have you visited the last lecture on physics?'
print len(str2), clf.transform(str2).toarray().shape
52 (52,8713)
这是怎么回事?还有一件事——所有的数字都是零
你总是需要传递一个数组或向量给transform
;如果您只想转换单个元素,则需要传递一个单例数组,然后提取其内容:
clf.transform([str1])[0]
顺便说一下,你得到一个二维数组作为输出的原因是字符串实际上是作为字符列表存储的,因此矢量器将字符串视为数组,其中每个字符被视为单个文档。