K模式计算每个点和簇质心之间的距离



我有一组要聚类的分类变量,因此我使用的是从github软件包中获取的k模式。我想将每个观察值(点)的距离与其属于群集的质心的距离。

这是我到目前为止已经实施的:

kmodes_cao = kmodes.KModes(n_clusters=6, init='Cao', verbose=1)
kmodes_cao.fit_predict(data)
# Print cluster centroids of the trained model.
print('k-modes (Cao) centroids:')
print(kmodes_cao.cluster_centroids_)
# Print training statistics
print('Final training cost: {}'.format(kmodes_cao.cost_))
print('Training iterations: {}'.format(kmodes_cao.n_iter_))

我不能使用欧洲距离距离,因为变量是分类的。计算每个点与簇质心的距离的理想方法是什么?

示例如果您有2个变量V1,则可以服用A或B,V2可以服用C或D如果您的质心为v1 = a和v2 = d

对于每个变量i,计数vi!= ci(centroid i)

如果您有一个实例v1 = a和v2 = c,则距质心为1这是二进制距离希望会有所帮助

您可以使用kmodes库中的方法matching_dissim()

要与数据集中的行进行比较,可以是您和其他任何人。首先,您必须安装库Panda,然后用此行导入该方法:

from kmodes.util.dissim import matching_dissim

https://github.com/nicodv/kmodes/issues/39

最新更新