2014-01-05 20 views
0

在matlab中聚類,我可以羣集數據矩陣等K均值對矩陣,而不是數據

[centers, assignments] = vl_kmeans(da, 3); 

在矩陣中的所有數據點「DA」將被分成3個集羣。

但是,而不是數據點,我想聚集完整的矩陣。我有數百個128 * 19的矩陣,我想將這些矩陣分成五組。

例如

如果有11個矩陣,如果128 * 19,

聚類後,我應該能夠找出:

Cluster 1: 1, 7, 11 
Cluster 2: 2,4,6,8,10 
Cluster 3: 3,5,9 

即中心1將返回矩陣編號1,7,11

我該如何在matlab中實現這個功能? 任何幫助/指針非常感謝。

(這些128 * 19矩陣包含圖像的SIFT描述,並且基於這些描述,我將分類的圖像的分類)

感謝。

回答

1

只需將每個矩陣轉換爲128 * 19長度的向量,並將您的「矩陣向量」連接成一個巨大的矩陣,您可以像往常一樣對其進行聚類。

編輯

一個重要的說明 - k均值集羣沒有分類算法。 Kmeans可用於幫助分類以減少描述符的數量,但不能作爲分類工具。

編輯2

簡單的例子:

有3點矩陣外徑尺寸2x2的

matrix 1: 
[[1, 2], 
[2, 3]] 

matrix 2: 
[[4, 5], 
[5, 6]] 

matrix 3: 
[[7, 7], 
[8, 9]] 

你可以將它們轉換成尺寸3×4的一點大矩陣(3次(2 * 2))

[ [1,2,2,3], 
    [4,5,5,6], 
    [7,7,8,9] ] 

並使用你的matlab聚類來對它進行聚類。每一行都是您的原始矩陣之一,因此您可以準確獲得所需的數據

+0

這種聚類會不會單獨處理每個矩陣元素? – Zohaib

+0

我不明白你的問題。如果您可以以矩陣的形式聚集數據點,那麼只需將數據轉換爲此格式即可,如上所述。 – lejlot

+0

我知道我無法在解釋我的問題時做得很好,但我已經修改了這個問題...... – Zohaib