簡體   English   中英

sklearn.cluster.DBSCAN提供意外結果

[英]sklearn.cluster.DBSCAN gives unexpected result

我正在使用DBSCAN方法對圖像進行聚類,但是會產生意外的結果。 假設我有10張圖片。

首先,我使用cv2.imread循環讀取圖像。 然后,我計算每個圖像之間的結構相似性指數。 在那之后,我有一個像這樣的矩陣:

[
[ 1.         -0.00893619  0.          0.          0.          0.50148778      0.47921832  0.          0.          0.        ]

[-0.00893619  1.          0.          0.          0.          0.00996088     -0.01873205  0.          0.          0.        ]

[ 0.          0.          1.          0.57884212  0.          0.             0.         0.          0.          0.        ]

[ 0.          0.          0.57884212  1.          0.          0.              0.         0.          0.          0.        ]

[ 0.  0.  0.  0.  1.  0.  0.  0.  0.  0.]

[ 0.50148778  0.00996088  0.          0.          0.          1.          0.63224396  0.          0.          0.        ]

[ 0.47921832 -0.01873205  0.          0.          0.          0.63224396      1.          0.          0.          0.        ]

[ 0.          0.          0.          0.          0.          0.          0.  1.          0.77507487  0.69697053]

[ 0.          0.          0.          0.          0.          0.          0.  0.77507487  1.          0.74861881]

[ 0.          0.          0.          0.          0.          0.          0.  0.69697053  0.74861881  1.        ]]

看起來不錯。 然后,我將簡單地調用DBSCAN:

db = DBSCAN(eps=0.4, min_samples=3, metric='precomputed').fit(distances)
labels = db.labels_
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)

結果是

[0 0 0 0 0 0 0 0 0 0]

我做錯了什么? 為什么將所有圖像都放在一個群集中?

DBSCAN通常假定不相似 (距離)而不是相似性。 也可以使用相似性閾值來實現(請參見通用DBSCAN)

問題是我錯誤地計算了距離矩陣-主對角線上的條目全為零。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM