scikit-learn 的 k-means:预测方法的真正作用是啥?
Posted
技术标签:
【中文标题】scikit-learn 的 k-means:预测方法的真正作用是啥?【英文标题】:scikit-learn's k-means: what does the predict method really do?scikit-learn 的 k-means:预测方法的真正作用是什么? 【发布时间】:2014-09-20 15:35:52 【问题描述】:当我使用 scikit-learn 的 k-means 实现时,我通常只调用 fit()
方法,这足以获取集群中心和标签。 predict()
方法用于计算标签,甚至fit_predict()
方法也可以方便地使用,但是如果我只能使用fit()
来获取标签,那么predict()
方法的目的是什么?
【问题讨论】:
不会对看不见的数据使用predict
方法吗?
有道理。因为它是 k-means,所以我并没有那样想。
我不确定我是否仍然理解。我有 n 个观察值并使用 kmeans 拟合它们。我有 n+1 观察,所以我可以简单地将其添加到我的数据集中并使用 fit() 拟合所有 n+1。或者,我们可以使用 fit() 并在第 n+1 次观察时使用 predict()。那么我是否正确理解在 predict() 中我们不会重新计算集群的质心?
【参考方案1】:
predict
,正如@EdChum 建议的那样,可用于未见数据。这(更重要的是,transform
方法)在将 k-means 用于半监督学习中的特征提取时很有用:您对大量样本进行聚类,然后使用最近的质心/到质心的距离作为后续监督学习的特征问题。使用结果进行预测时,您会得到 k-means 未看到的样本。
【讨论】:
你能告诉我在应用 k-means 后最推荐的创建训练集的方法是什么吗?我使用 dictVectorizer + tfIDFTransformer 获得 X 然后执行 km.fit(X),我想对新文档使用 predict 但我需要为其创建一个稀疏矩阵,实现这一目标的最有效方法是什么?跨度>以上是关于scikit-learn 的 k-means:预测方法的真正作用是啥?的主要内容,如果未能解决你的问题,请参考以下文章
K-means 仅使用带有 scikit-learn 的特定数据框列
在 Python 2.7 的 scikit-learn 之外是不是有任何 K-means++ 实现?