2012-08-27 28 views

回答

1

documentation,我們知道我們可以通過一個'distance'選項kmeans

'距離'

距離測量,在p維空間。關於這個參數,kmeans最小化爲 。對於不同的支持距離度量,kmeans計算質心集羣 。

'sqEuclidean'

平方歐幾里德距離(默認)。每個質心是該羣集中 點的平均值。

'cityblock'

絕對差值的和,即L1距離。每個質心是該組中各點的組分平均值。

「餘弦」

一個減分之間的夾角(如 載體處理的)的餘弦值。每個質心是該簇中點的平均值, 將這些點歸一化爲單位歐幾里得長度。

「相關」

一減點之間的樣本相關(如序列值的 處理的)。每個質心是 中各點的分量平均值,在對這些點進行對中和歸一化之後,將其平均值和單位標準偏差歸零。

「漢明」上不同的比特

百分比(僅適用於二進制數據)。每個 質心是該組中點的組分中位數。

所以,例如:

[idx,ctrs] = kmeans(X,2, 'Distance','cityblock'); 

至於定製功能(即,用戶實現的):AFAIK,這是不可能的沒有黑客相關M文件。

2

你需要做的是使用SVD將你的距離矩陣分解成一個特徵空間,然後在由SVD得分表示的新特徵空間上執行kmeans。請參閱Rob Tibshirani的統計學習元素。

或者你可以使用距離矩陣工作的k中介--R中的as.dist()會將矩陣轉換爲dist對象,然後可以在其上執行K-mediods。

相關問題