首页 > 解决方案 > KModes:用数组和分类数据初始化质心

问题描述

我正在尝试重现最初以“随机”开始的 KModes 聚类模型的结果。
为此,我尝试使用先前质心数组初始化质心。
该模型似乎无法识别分类数据。
使用数组启动质心的正确语法是什么?

代码:

att1 = [1,2,3,1,1,2,3,1]  
att2 = ['A','B','B','A','C','C','C','C']  
data1 = list(zip(att1, att2))  
test = pd.DataFrame(data=data1, columns =['A1','A2'])  


kmodeTest = KModes(n_clusters=3, init = 'random', n_init = 3, verbose=1).fit(test)  

cent = kmodeTest.cluster_centroids_  

质心结果为:

数组([['1', 'C'], ['1', 'A'], ['2', 'B']], dtype='<U11')

如果我用它来创建类似的集群:

kmodeTest2 = KModes(n_clusters=3, init = cent, n_init = 3, verbose=1).fit(test)  

我收到错误消息:
ValueError: invalid literal for int() with base 10: 'C'

标签: pythoncluster-analysiscategorical-data

解决方案


您需要对簇质心使用编码数组。语法是:

cent = kmodeTest._enc_cluster_centroids

推荐阅读