2016-12-15 189 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 返回距離 –