r语言聚类分析

聚类分析
k-均值聚类:
1、随机选取k个样本作为类中心;
2、计算各样本与各类中心的距离;
3、将各样本归于最近的类中心点;
4、求各类的样本的均值,作为新的类中心;
5、判定:若类中心不再发生变动或达到迭代次数,算法结束,否则回到第2步。
代码:
x <- 1:100   #生成数据点
y <- 50:149
plot(x,y)
center_1 <- c(x[1],y[1])  #初始化类中心
center_2 <- c(x[2],y[2])
n <- length(x)   #统计样本个数
m <- 3
dis <- matrix(nrow = n,ncol = m)

sqrt((x[1]-center_1[1])^2+(y[1]-center_1[2])^2)
sqrt((x[1]-center_2[1])^2+(y[1]-center_2[2])^2)

while(TRUE){
  for(i in 1:n){
    dis[i,1] <- sqrt((x[i]-center_1[1])^2+(y[i]-center_1[2])^2)
    dis[i,2] <- sqrt((x[i]-center_2[1])^2+(y[i]-center_2[2])^2)
  }
  for(i in 1:n){
    dis[i,3] <- which.min(dis[i,1:2])
  }
  
  mean(x[dis[,3]==1])
  mean(y[dis[,3]==1])
  
  mean(x[dis[,3]==2])
  mean(x[dis[,3]==2])
  center_1_new <- c(mean(x[dis[,3]==1]),mean(y[dis[,3]==1]))
  center_2_new <- c(mean(x[dis[,3]==2]),mean(y[dis[,3]==2]))
  
  if(all(center_1==center_1_new) & all(center_2==center_2_new)){
    break
  }
  
  center_1 <- center_1_new
  center_2 <- center_2_new
}
k-中心点聚类
k-中心点算法与k-均值算法在原理上十分相近,它是针对k-均值算法易受极值影响这一缺点的改进算法。在原理上的差异在于选择各类别中心点时不取样本均值点,而在类别内选取到其余样本距离之和最小的样本为中心。
层次聚类
层次聚类的名称在于,其聚类的过程可以通过类似于系谱图的形式呈现出来。相比k-均值算法与k-中心点算法,系谱算法的突出特点在于,不需要事先设定类别数k,这是因为它每次迭代过程叫仅将距离最近的两个样本/簇聚为一类,其运作过程将自然得到k=n至k=1(n为待分类样本总数)个类别的聚类结果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值