• 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

  • 相关阅读:
    elastic
    原生js获取css样式和修改css样式
    React项目开发中的数据管理
    js获取鼠标位置
    闭包
    HTML5与HTML4的区别
    JSON 相关
    RESTful Web Services初探
    IE6浏览器兼容问题及部分解决方案
    关于Doctype
  • 原文地址:https://www.cnblogs.com/cpg123/p/12308549.html
Copyright © 2020-2023  润新知