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

时间:2016-12-15 18:05:06

标签: python-3.x scikit-learn cluster-analysis data-mining k-means

我有一组要分类的分类变量,因此我使用的是从github package获取的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_))

我无法使用Eucledean距离,因为变量是分类的。计算每个点到其聚类质心的距离的理想方法是什么?

2 个答案:

答案 0 :(得分:0)

示例如果您有2个变量V1可以取A或B而V2可以取C或D. 如果你的质心是V1 = A而V2 = D

对于每个变量i,当Vi!= Ci(质心i)

时计数

如果你有一个实例V1 = A和V2 = C那么距质心的距离是1 它是二进制距离 跳,这将有助于

答案 1 :(得分:0)

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

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

from kmodes.util.dissim import matching_dissim

kmodes