algorithm - k均值聚类可以做分类吗?

标签 algorithm cluster-analysis data-mining k-means

我想知道k-means聚类算法能不能做分类?

如果我做了一个简单的 k-means 聚类。

假设我有很多数据,我使用k-means聚类,然后得到2个聚类A,B。质心计算方法是欧氏距离。

左侧的集群 A。

右侧的集群 B。

所以,如果我有一个新数据。我该怎么办?

  1. 再次运行k-means聚类算法,可以得到新数据属于哪个簇?

  2. 记录最后一个质心并使用欧几里德距离计算确定新数据属于?

  3. 其他方法?

最佳答案

最简单的方法当然是 2.,将每个对象分配给最近的质心(从技术上讲,使用平方和,而不是欧几里得距离;这对于 k-means 更正确,并且可以节省 sqrt 计算)。

方法 1. 很脆弱,因为 k-means 可能会给你一个完全不同的解决方案;特别是如果它一开始就不能很好地适合您的数据(例如维度太高、大小差异太大的簇、太多的簇……)

不过,下面的方法可能更合理:

<强>3。训练一个实际的分类器。

是的,您可以使用 k-means 生成初始分区,然后假设 k-means 分区可能是合理的类(您真的应该在某个时候验证这一点),然后如果数据已被用户标记,则继续操作。

即运行 k-means,在生成的集群上训练 SVM。然后使用SVM进行分类。

k-NN 分类,甚至将每个对象分配到最近的聚类中心(选项 1)可以看作是非常简单的分类器。后者是 1NN 分类器,仅在簇质心上“训练”。

关于algorithm - k均值聚类可以做分类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22300830/

相关文章:

R:K 均值聚类与社区检测算法(加权相关网络)- 我是否将这个问题过于复杂?

machine-learning - 无监督学习中的集成学习

cluster-analysis - 余弦距离作为 k 均值的矢量距离函数

algorithm - 对于这种特定情况,您建议使用哪种数据挖掘算法?

r - 使用 R 进行 K 中心聚类 - 结果图是否正确?

algorithm - 如何编写一个推荐项目系统?

algorithm - 数量重新分配逻辑 - 具有外部数据集的 MapGroups

algorithm - 获取以下递归实现的时间复杂度

c++ - 919B |第n个数字的总和为10 |代码部队

python - python中的聚类、相异度和距离是什么?