2014-09-26 42 views
1

我有大量的對象,爲此我計算了每對之間4個百分比的差異。聚類分析的適用性

例如: O1和O2有差異:A12,B12,C12和D12例如51,78,22,93

我想標誌「關閉」的對象,即小於某一閾值不同。 (我還不知道怎麼「重要」中的4項措施是。)

是聚類分析來解決這個合適的方法?任何指向Python算法和初學者教程的指針都會非常有幫助。

+0

這聽起來不像聚類分析。您已經定義了您的目標:「連接」相似度低於閾值的對象。但是你很模糊,很難回答。 – 2014-09-26 18:56:05

回答

1

這可能不是一個聚類分析問題。

基本的區別在於你是否按照某種連通性標準(這不是聚類)對所有點進行分組,或者這些算法是否根據數據本身動態地確定了標準(這是聚類)?

與典型的聚類分析的定義問題是羣集定義僅基於數據。也就是說,這些算法爲同一過程中的這些羣集創建羣集和定義。換句話說,當你開始聚類時,你給算法提供了數據,但是你沒有給它一個閾值。

由於您已經有閾值,因此通常不會將這稱爲羣集。即使您有多個閾值可供選擇,只需將數據分組即可,因爲您的閾值將決定並比較分組。

這裏的警告正是你所說的「閾值」以及你想如何應用它。如果您想查找所有建立連接點鏈的點少於某個閾值,則不是聚類。相反,如果您希望閾值定義點之間的非線性度量,則將應用正常的聚類算法(儘管使用非常不尋常的度量 - 因此這可能不是您想要的方法)。

而另一個需要注意的是,通過「集羣」的人意味着不同的事情,我想我使用一般的數據分析的定義,但人們以其他方式使用這個詞太,當然。例如,參見scipy.cluster中的算法。


至於採取什麼方法,到目前爲止還沒有描述足夠的細節來回答這個問題。例如,你想用它們的中位數來替換最近的對嗎?還是遵循一個連接的鄰居鏈?等等。也許像KDTree對你有用。

+0

KDtree需要*數值*數據;不相似。但我同意這聽起來不像一個聚類分析問題。 – 2014-09-26 18:54:28

+0

@ Anony-Mousse:當然,但OPs數據的數據格式不是很清楚(或者如果清楚,請實際解釋)。如果你有更好的答案,只需發佈​​它,但創建稻草人的意義何在? – tom10 2014-09-26 19:10:21

+0

謝謝Tom10,這使得它更清晰。我想我會嘗試Python的CKDTree庫,例如,[這裏](http://stackoverflow.com/questions/10818546/finding-index-of-nearest-point-in-numpy-arrays-of-x-and- y座標) – schoon 2014-09-28 18:25:04