网站导航栏内容,龙泉驿区建设局网站,中文网站建设入门,我想建设一个算命网站这取决于您使用的矢量器。在CountVectorizer统计文档中单词的出现次数。它为每个文档输出一个(n_words, 1)向量#xff0c;其中包含每个单词在文档中出现的次数。n_words是文档中的单词总数(也就是词汇表的大小)。它也适合词汇表#xff0c;这样您就可以反省模型(看看哪个词是…这取决于您使用的矢量器。在CountVectorizer统计文档中单词的出现次数。它为每个文档输出一个(n_words, 1)向量其中包含每个单词在文档中出现的次数。n_words是文档中的单词总数(也就是词汇表的大小)。它也适合词汇表这样您就可以反省模型(看看哪个词是重要的等等)。您可以使用vectorizer.get_feature_names()查看它。在当你把它放在前500个文档中时词汇表将只由500个文档中的单词组成。假设有30k个这样的矩阵fit_transform输出一个500x30k稀疏矩阵。现在您再次使用接下来的500个文档fit_transform但是它们只包含29k个单词所以您得到了一个500x29k矩阵…现在如何调整矩阵以确保所有文档都具有一致的表示形式我现在想不出一个简单的办法来做这件事。在对于TfidfVectorizer您还有另一个问题那就是文档频率的倒数为了能够计算文档频率您需要一次查看所有文档。但是TfidfVectorizer只是一个CountVectorizer后面跟着一个TfIdfTransformer因此如果您设法获得CountVectorizer的输出那么您可以对数据应用TfIdfTransformer。在使用HashingVectorizer情况有所不同这里没有词汇表。在In [51]: hvect HashingVectorizer()In [52]: hvect.fit_transform(X[:1000])1000x1048576 sparse matrix of type with 156733 stored elements in Compressed Sparse Row format在这里前1000个文档中没有1M个不同的单词但是我们得到的矩阵有1M列。HashingVectorizer不在内存中存储单词。这样可以提高内存效率并确保返回的矩阵始终具有相同的列数。所以您不会遇到与CountVectorizer相同的问题。在这可能是您所描述的批处理的最佳解决方案。有两个缺点即你不能得到idf权重你不知道单词和你的特征之间的映射。在希望这有帮助。在编辑如果您有太多的数据HashingVectorizer是最好的选择。如果您仍然想使用CountVectorizer一个可能的解决方法是自己调整词汇表并将其传递给向量器这样您只需要调用tranform。在下面是一个您可以修改的示例^{pr2}$现在不起作用的方法是# Fitting directly:vect CountVectorizer()vect.fit_transform(X[:1000])1000x27953 sparse matrix of type with 156751 stored elements in Compressed Sparse Row format注意我们得到的矩阵的大小。“手动”匹配词汇def tokenizer(doc):# Using default pattern from CountVectorizertoken_pattern re.compile((?u)\\b\\w\\w\\b)return [t for t in token_pattern.findall(doc)]stop_words set() # Whatever you want to have as stop words.vocabulary set([word for doc in X for word in tokenizer(doc) if word not in stop_words])vectorizer CountVectorizer(vocabularyvocabulary)X_counts vectorizer.transform(X[:1000])# Now X_counts is:# 1000x155448 sparse matrix of type # with 149624 stored elements in Compressed Sparse Row format#X_tfidf tfidf.transform(X_counts)在您的示例中您需要在应用tfidf转换之前首先构建整个矩阵X_计数(对于所有文档)。在