在 scikit-learn k-means 集群中预测文档时出现 ValueError

Posted

技术标签:

【中文标题】在 scikit-learn k-means 集群中预测文档时出现 ValueError【英文标题】:ValueError while predicting a document in a scikit-learn k-means cluster 【发布时间】:2017-09-19 05:24:52 【问题描述】:

我正在尝试使用 scikit-learn 在经过训练的 k-means 模型中为一堆测试文档预测一个集群。

vectorizer = TfidfVectorizer(stop_words='english')
X = vectorizer.fit_transform(train_documents)
k = 10
model = KMeans(n_clusters=k, init='k-means++', max_iter=100, n_init=1)
model.fit(X)

10 个集群的模型生成没有任何问题。但是当我尝试预测文档列表时,我得到了一个错误。

predicted_cluster = model.predict(test_documents)

错误信息:

ValueError: 无法将字符串转换为浮点数...

是否需要使用 PCA 来减少特征数量,还是需要对文本文档进行预处理?

【问题讨论】:

【参考方案1】:

您需要像变换 train 一样变换 test_documents

X_test = vectorizer.transform(test_documents)
predicted_cluster = model.predict(X_test)

确保您只在测试文档上调用 transform,并使用与火车文档上的 fit()fit_transform() 相同的 vectorizer 对象。

【讨论】:

或者更确切地说 X_test = vectorizer.transform(test_documents) @pgrenholm 是的。已更正。谢谢。即使我明确表示不要那样做,但似乎我自己也犯了这个错误 是的。它对我有用。非常感谢。我收到一个错误,例如:功能数量不正确,但下面的帖子可以解决这个问题。 ***.com/a/26943563/1269131 @SiMemon 好的。我认为它会被理解,因为我在我的代码中使用了相同的名称。但我应该明确提到使用同一个对象。

以上是关于在 scikit-learn k-means 集群中预测文档时出现 ValueError的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn 的 k-means:预测方法的真正作用是啥?

是否可以使用 scikit-learn K-Means Clustering 指定您自己的距离函数?

是否可以使用 scikit-learn K-Means Clustering 指定您自己的距离函数?

在 scikit-learn 中获取每个亲和传播集群的***术语

小批量 k-means 返回少于 k 个集群

用scikit-learn学习K-Means聚类