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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM