K-Means

餘弦距離作為 KMeans 中的相似性度量

  • August 21, 2017

我目前正在解決一個問題,我必須使用餘弦距離作為 k 均值聚類的相似性度量。但是,標準的 k-means 聚類包(來自 Sklearn 包)使用歐幾里德距離作為標準,並且不允許您更改它。

因此,我的理解是通過下面的代碼規範化我的原始數據集。然後我可以運行 kmeans 包(使用歐幾里得距離);是否與我將距離度量更改為餘弦距離一樣?

from sklearn import preprocessing  # to normalise existing X
X_Norm = preprocessing.normalize(X)

km2 = cluster.KMeans(n_clusters=5,init='random').fit(X_Norm)

如果我對此的數學理解不正確,請告訴我。

應該是一樣的,因為歸一化向量餘弦相似度和歐幾里得相似度是線性連接的。這是解釋:

餘弦距離實際上是餘弦相似度:.

現在,讓我們看看我們可以對歸一化向量的歐幾里得距離做什麼:

請注意,對於歸一化向量

因此,您可以看到歸一化向量的這些距離之間存在直接的線性聯繫。

引用自:https://stats.stackexchange.com/questions/299013

comments powered by Disqus