K-means 算法的理解与代码实现

K-means 算法的理解与代码实现

K-means 算法又名K均值算法,是一种聚类算法,K-means 算法是在无监督的情况下将一堆没有标签的点,找特征归类为簇。其算法思想大致为:最开始在所有样本点中随机选取k个点,作为簇中心点,然后分别计算样本点到k个中心点的距离,对于样本点,将其归类到与它距离最近的中心点所属的簇中,这一步完成后,再计算每个簇中所有样本点的平均值,更新簇中心的位置,重复多次,直到簇中心的位置不再变化。

1.K-means算法伪代码

1.随机生成num个二维样本点的数据集(也可以让数据集在某个范围内随机生成)
2.KMeans(dataSet, k, maxIter = )函数过程:
3.   从num个样本点中随机选出k个点作为初始的簇中心点
4.   while 判断簇中心是否还在变化 循环不超过maxIter次
5.    for i =0,1,2…,num
6.     用“欧氏距离”求出num个样本点到K个中心点的距离
      根据距离最近的“簇中心”λj=argmini∈{1,2,…,k}将该点归类到这个簇中
7.    for i =0,1,2…,k
8.     求出簇中所有点的均值,更新簇中心
9.   return 聚类中心,点分配结果
10.打印图像

2.代码实现

随机生成num个二维样本点
def creatDataSet(num):
    '''
    随机生成数据集

    Args:
        num: 数据集个数
    Returns:
        dataMat: 数据样本矩阵    
    '''
    dataMat = []
    
    for i in range(num):
        generateddata=[random.uniform(-5.0,0.0),random.uniform(-5.0,0.0)]

        if not generateddata in dataMat:#去掉重复数据
  
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值