我有一组要聚类的分类变量,因此我使用的是从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