R与数据分析旧笔记(十四) 动态聚类:K-means

动态聚类:K-means方法

动态聚类:K-means方法

  • 算法
    1. 选择K个点作为初始质心
    2. 将每个点指派到最近的质心,形成K个簇(聚类)
    3. 重新计算每个簇的质心
    4. 重复2-3直至质心不发生变化

kmeans()函数

> X=iris[,1:4]
> km=kmeans(X,3)
> km
K-means clustering with 3 clusters of sizes 62, 50, 38

Cluster means:
Sepal.Length Sepal.Width Petal.Length Petal.Width
1 5.901613 2.748387 4.393548 1.433871
2 5.006000 3.428000 1.462000 0.246000
3 6.850000 3.073684 5.742105 2.071053

Clustering vector:
[1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[38] 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[75] 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 3 3 3 3 1 3 3 3 3
[112] 3 3 1 1 3 3 3 3 1 3 1 3 1 3 3 1 1 3 3 3 3 3 1 3 3 3 3 1 3 3 3 1 3 3 3 1 3
[149] 3 1

Within cluster sum of squares by cluster:
[1] 39.82097 15.15100 23.87947
(between_SS / total_SS = 88.4 %)

Available components:

[1] "cluster" "centers" "totss" "withinss" "tot.withinss"
[6] "betweenss" "size" "iter" "ifault"

K-means算法的优缺点

  • 有效率,而且不容易受初始值选择的影响
  • 不能处理非球形的簇
  • 不能处理不同尺寸、不同密度的簇
  • 离群值可能有较大的干扰(因此要先剔除)
上一篇:Silverlight和WPF中DataContractJsonSerializer对时间的处理差异


下一篇:R与数据分析旧笔记(十五) 基于有代表性的点的技术:K中心聚类法