zoukankan      html  css  js  c++  java
  • k-modes聚类算法

    为什么要用k-modes算法

    k-means算法是一种简单且实用的聚类算法,但是传统的k-means算法只适用于连续属性的数据集(数值型数据),而对于离散属性的数据集,计算簇的均值以及点之间的欧式距离就变得不合适了。k-modes作为k-means的一种扩展(变种),距离使用汉明距离,适用于离散属性的数据集。

    k-modes算法介绍

    K-modes是数据挖掘中针对分类属性型数据进行聚类采用的方法,其算法思想比较简单,时间复杂度也比K-means、K-medoids低,大致思想如下:
    假设有N个样本,M个属性且全是离散的,簇的个数为k

    算例


    code-Python

    import numpy as np
    from kmodes import kmodes
    
    '''生成互相无交集的离散属性样本集'''
    data1 = np.random.randint(1,6,(10000,10))
    data2 = np.random.randint(6,12,(10000,10))
    
    data = np.concatenate((data1,data2))
    
    '''进行K-modes聚类'''
    km = kmodes.KModes(n_clusters=2)
    clusters = km.fit_predict(data)
    
    '''计算正确归类率'''
    score = np.sum(clusters[:int(len(clusters)/2)])+(len(clusters)/2-np.sum(clusters[int(len(clusters)/2):]))
    score = score/len(clusters)
    if score >= 0.5:
        print('正确率:'+ str(score))
    else:
        print('正确率:'+ str(1-score))
    

    参考
    https://blog.csdn.net/tyh70537/article/details/78158674
    https://www.cnblogs.com/feffery/p/8604530.html

  • 相关阅读:
    第二阶段团队站立会议06
    第二阶段团队站立会议05
    Spring
    JVM
    线程池
    java内存模型
    线程
    接口与抽象类
    动态绑定,多态,static
    同步异步,并发并行概念的理解
  • 原文地址:https://www.cnblogs.com/cpg123/p/12308549.html
Copyright © 2011-2022 走看看