Kmeans算法的R语言代码实现

本文探讨了Kmeans聚类算法的原理,并详细介绍了如何使用R语言的原生代码实现这一过程。通过逐步解析算法的各个步骤,包括选择初始质心、计算数据点与质心的距离、更新质心等,读者可以深入理解Kmeans算法的内部工作机制。文中提供了R代码示例,并建议使用R的iris数据集进行实践操作。
摘要由CSDN通过智能技术生成

Kmeans算法是机器学习里面用的相当多的一种聚类算法,属于半监督学习的范畴,如果你对数据科学很熟悉的话,R和Python都有相应的封装函数,这篇文章带你从R自带函数中解脱出来,进一步探索kmeans算法的内部并用R原生代码进行实现!

Kmeans算法分为如下几个步骤:

  1. 确定中心点的数量k,随即从数据中选取k个数据
  2. 计算数据点到每个中心点的距离(一般为欧式距离),确定每个点归类到最近点的类当中
  3. 去每一个类的数据均值作为新的中心带你,再次计算数据到中心点的位置
  4. 循环2,3步骤,直到中心点坐标不再变化或者变化很小

R语言的自带函数为kmeans(),输入参数为数据和质心数量和最大迭代次数,默认为10次,具体可参考R语言的kmeans文档,我们在这里不多做赘述,接下来我们根据上面的算法核心来编写R语言代码:

customKmeans<-function(dataset=NA,k=NA){
  if(is.na(dataset) || is.na(k)){
    stop("You must input valid parameters!!")
  }

  #计算两点之间欧式距离的函数
  Eudist<-function(x,y){
    distance<-sqrt(sum((x-y)^2))
    return (distance)
  }
  
  rows.dataset<-nrow(dataset)
  continue.change=TRUE
  initPoint<-dataset[sample.int(rows.dataset,size = k),]
  formerPoint<-initPoint
  iterPoint<
  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值