2016-12-27 87 views
-1

我想要做k均值聚類來對基於訓練數據的測試數據進行分類,這兩個訓練數據都有3個類(1,2和3)。用於測試數據分類的k均值聚類

我該如何對測試數據集進行分類,使用簇大小爲在kmeans中k = 10(例如使用Matlab)?我知道我可以有k = 3,然後使用最近的鄰居來識別基於最近簇大小的數據......但不知道我會用什麼值其他k = 3?你將如何標記這10個集羣中的每一個?

謝謝

+0

爲什麼這對k = 10個集羣不起作用? –

回答

0

雖然這是我理解的大綱,但您確切想要做什麼有點不清楚。

當您對數據進行羣集時,理想情況下標籤不存在,因爲您可以使用羣集來從數據獲取洞察或將其用於預處理。

雖然,如果要執行羣集,然後根據羣集中心的接近度將類ID分配給新數據點,則可以執行以下操作。

首先,您通過引導或其他方法選擇k,也許使用Silhouette係數。一旦你得到聚類中心,檢查哪個中心最接近新的數據點,並相應地分配類別ID。

在這種情況下,您可能有興趣使用Rand IndexAdjusted Rand Index來獲得羣集質量。

1

10個簇的分類與3個簇的分類沒有區別。由k-means給出的聚類數目與數據中「類別」的數目無關。 k-means是一種無監督的學習算法,這意味着它在訓練期間不考慮訓練數據的類別。

算法將是這個樣子:

distances = dist(test_point, cluster_centers) 
cluster = clusters[ min(distances) ] 
class = mode(cluster.class) 

,我們發現與聚類中心和我們的測試點之間最小距離的集羣,然後我們發現包含在這些元素中最常見的類別標籤距離最近的集羣。