2016-12-15 194 views
-1

我有一组要分类的分类变量,所以我使用从github package取得的k模式。我想要得到每个观察点(点)到它所属群集的质心的距离。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距离自变量是分类。计算每个点到其簇质心距离的理想方法是什么?

+0

看的源代码'KModes'功能。不要重新发明轮子。 –

+0

我看穿它,但无法找到距离的计算方式。我是使用数据挖掘的新手,所以请你指导一下? –

+0

甚至在文档中,'cat_dissim'参数。 –

回答

0

例如,如果有两个变量V1可以采取A或B和V2。如果您的质心为V1 = A和V2 = d

对于每个变量i,计数可以采取C或d 当六!=次(质心ⅰ)

,如果你有一个实例V1 = A和V2 = C然后从形心的距离为1 是二进制距离 一跳,这将有助于

+0

谢谢你的答案,但它有点不清楚。你能否详细说明一下? –

+0

Kmods为每个变量计算模式值(最多的类别)。因此,在学习结束时,您会得到6个质心,假设您的数据集中有两个变量,则为 C1 =(V1 = category1,V2 = category2) ... ... C6 =(V1 = categoryX,V2 = categoryY) 如果要预测新实例的集群,则返回集群,该集群可为您提供最小距离 以计算实例与集群质心C之间的距离: 您可以使用此公式 distance = 0 对于每个变量Vi \t如果Vi 1 = Ci的值\t \t距离+ = 1 返回距离 –