将分类数据初始化为kmodes的预定义质心

2024-09-27 21:30:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用kmodes对五个预定义质心上的真实世界分类数据进行聚类。我的代码如下所示:

real_df = [['B' 'A' 'A' ... 'D']
 ['D' 'I' 'D' ... ]
 ['D' 'I' 'D' ... ]
 ...
 ['K' 'F' 'D' ... 'D']
 ['D' 'P' 'D' ... 'D']]

cen = [['P', 'S', 'M', 'P', 'P', 'P', 'S'],
 ['P', 'P', 'P', 'S', 'I', 'M', 'W',],
 ['M', 'W', 'F', 'R', 'S', 'A', 'I'],
 ['P', 'S', 'M', 'F', 'R', 'S', 'A'],
 ['P', 'S', 'M', 'M', 'P', 'P', 'P',]]
km = KModes(n_clusters=5, init=cen, n_init = 1, verbose = 0)
fitClusters = km.fit_predict(real_df)

但是,我收到以下错误消息:

Error

我错过了什么


Tags: 数据代码dfverboseinit分类聚类real
1条回答
网友
1楼 · 发布于 2024-09-27 21:30:19

我也遇到了同样的问题,并在github上找到了与Nico de Vos连接的解决方案
https://github.com/nicodv/kmodes

当使用init = ...提供初始集群时,必须提供编码集群质心数组

代码基本上是每个属性的所有唯一值的排列顺序(从A到Z,从低到高),从0开始

在您的示例中,如果在第一个属性中使用全部26个字母,则A=0、B=1、C=2等。如果缺少一个字母,则Z为24,而不是25
所以数组的第一行是[15, 18, 12, 15, 15, 15, 18]

有用代码:
拥有模型后,使用model._enc_cluster_centroids获取编码的簇质心

使用model._enc_map获取映射

相关问题 更多 >

    热门问题