KMeans、PAM、CLARA、CLARANS聚类算法和代码

本文详细介绍了KMeans、PAM、CLARA和CLARANS四种聚类算法,包括算法思想、实现过程和时间复杂度。KMeans通过迭代寻找类簇中心,对噪音敏感;PAM算法改进了KMeans,通过最小代价选择类聚中心,适合小数据集;CLARA针对大数据集,通过抽样应用PAM;CLARANS则尝试找到最优解,但速度较慢,适用于凸形或球形边界聚类。如需完整代码,可私信作者。

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

聚类算法的最终目的是: result = MAX{集合内的相似度}/{集合间的相似度}

需要帮忙写任何算法、课程设计、论文算法实现、都可以找我企鹅:1028434547

1、K均值聚类算法,也叫KMeans聚类算法。

        该算法的基本思想是和我们人进行物品分类的思想是相同的,就是通过距离来进行衡量。那么我们首先就需要知道我们要分成几个类,然后就找到几个类的相应的中心点,然后就把其他点按照离这几个中心点的距离作为划分类簇的依据。

        算法具体实现:必须知道需要划分成几个类簇,假定划分为K个类簇,那么首先随机选取K个中心点,(其实该算法的核心就是通过不停的迭代查找到合适的中心点,然后只剩下类簇的划分),然后遍历数据,按照到这K个中心点到其他数据点的距离进行每个点的类簇划分。随后在每个类簇中计算各个特征量的均值作为新的类聚中心,如果计算后的新中心和上次的中心相同,说明迭代稳定,找到了比较优秀的类簇划分,结束程序,否则重复上面的步骤。

        伪代码:

       

cluster_core = random(K);
while(TRUE)
{
    //在类簇的划分的时候可以采用欧式或者曼哈顿距离计算
    clusterResult = getCluster(cluster_core,data);
    for(I = 0;i < k;i++)
        计算每个类簇的新中心点,通过均值计算
    if(新的中心点 = 上一次的中心点)
        break;
}

python代码:

def KMeans(dataSet, k, distMeas=distEclud):
    m = shape(dataSet)[0] #数据集的行
    print("data rows is %d" % m)
    #用于聚类的数据,将数据取成矩阵形式,m*2形式矩阵
    clusterAssment = mat(zeros((m, 2)))
    #选前K个数据作为聚类中心
    centroids = initCent(dataSet, k)
    clusterChanged = True
    #用于记录迭代的次数
    iter_count = 0
    #遍历直到中心变化
    while clusterChanged:
        clusterChanged = False
        for i in range(m): #遍历数据集中的每一行数据
            minDist = inf
            minIndex = -1
            for j in range(k): #寻找最近质心
                iter_count += 1
                distJI = distMeas(centroids[j, :], dataSet[i, :])
                if distJI < minDist: #更新最小距离和质心下标
                    minDist = distJI
                    minIndex = j
            if clusterAssment[i, 0] != minIndex:
                clusterChanged = True
            clusterAssment[i, :] = minIndex, minDist**2 #记录最小距离质心下标,最小距离的平方
        for cent in ra
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值