📅  最后修改于: 2020-12-02 06:44:39             🧑  作者: Mango
k均值聚类旨在将n个观察值划分为k个聚类,其中每个观察值均属于具有最均值的聚类,作为聚类的原型。这导致将数据空间划分为Voronoi单元。
给定一组观测值(x 1 ,x 2 ,…,x n ) ,其中每个观测值都是d维实矢量,k-均值聚类旨在将n个观测值划分为k个组G = {G 1 ,G 2 ,…,G k } ,以最小化如下定义的集群内平方和(WCSS)-
$$ argmin \:\ sum_ {i = 1} ^ {k} \ sum_ {x \ in S_ {i}} \ parallel x-\ mu_ {i} \ parallel ^ 2 $$
后面的公式显示了最小化的目标函数,以便在k均值聚类中找到最佳原型。该公式的直觉是我们希望找到彼此不同的组,并且每个成员的每个成员应该与每个群集的其他成员相似。
以下示例演示了如何在R中运行k-means聚类算法。
library(ggplot2)
# Prepare Data
data = mtcars
# We need to scale the data to have zero mean and unit variance
data
为了找到一个好的K值,我们可以绘制不同K值的组内平方和。绘制此度量通常会随着添加更多组而减少,我们想找到一个点,其中组内sum的减少的平方开始缓慢减小。在图中,该值最好用K = 6表示。
既然已经定义了K的值,则需要使用该值运行算法。
# K-Means Cluster Analysis
fit