【数据挖掘】k-means聚类算法

K-means聚类算法是一种基于数据结构决定cluster大小的方法,它需要预先设定聚类数量。算法流程包括:随机初始化k个中心点,将每个数据点分配到最近的聚类,然后更新聚类中心,重复此过程直到中心点不再变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

K-Means聚类
    层次聚类给出了一个树作为结果,但是其不足之处:没有额外的工作,树形结构并不能真正将数据划分到独立的分组中,并且算法属于计算密集型任务。
因为每个item之间的距离需要计算,且合并之后,距离需要重算,所以当数据集非常大时,算法运行很缓慢。  

    K-means聚类,不同于层次聚类,它事先告诉有多少个唯一的clust要生成。算法基于数据的结构来决定cluster的大小。  

def kclustr(rows,distance=sim_pearson,k=4):
    #取得向量每个维度中的最大、最小值
    ranges=[(min(row[i] for row in rows),max(row[i] for row in rows)) 
            for i in range(len(rows[0]))]
    #创建k个随机位置中心(向量)
    clusters=[[random.random() * (ranges[i][1] - ranges[i][0]) + ranges[i][0] 
               for i in range(len(rows[0]))] for j in range(k)]
    lastmatches=None    
    for t in range(100):#最大迭代次数
        bestmatch=[[] for i in range(k)]#
        for j in range(len(rows)):
            row = rows[j]
            #分别计算row与随机clust的距离那个最近
            bestmatch=0
            for i in range(k):
                d=distance(clusters[i],row)
                if d<distance(clusters[bestmatch],row):bes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值