在 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 指定您自己的距离函数?