原理: 将数据集中的样本划分为若干个通常是不想交的子集,每个子集称为一个“簇”。通过这样的划分,每个簇对英语一些潜在的概念(类别)
1. 基本问题
1)性能度量
对聚类结果评价好坏:簇内相似度高,簇间相似度低
2)距离计算
2. kmeans 聚类
1)找最优的K值
# cluster.stats函数需要使用fpc库
library(fpc); library(ggplot2)
K <- 2:10 # k取2到8评估K
round <- 30 # --每次迭代30次,避免局部最优
n <- 100
g <- 6
set.seed(g)
# 生成数据集
iris <- data.frame(x = unlist(lapply(1:g, function(i) rnorm(n/g, runif(1)*i^2))),
y = unlist(lapply(1:g, function(i) rnorm(n/g, runif(1)*i^2))))
rst <- sapply(K, function(i){
print(paste("K=", i))
mean(