K-Means
餘弦距離作為 KMeans 中的相似性度量
我目前正在解決一個問題,我必須使用餘弦距離作為 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)
如果我對此的數學理解不正確,請告訴我。
應該是一樣的,因為歸一化向量餘弦相似度和歐幾里得相似度是線性連接的。這是解釋:
餘弦距離實際上是餘弦相似度:.
現在,讓我們看看我們可以對歸一化向量的歐幾里得距離做什麼:
請注意,對於歸一化向量
因此,您可以看到歸一化向量的這些距離之間存在直接的線性聯繫。