이미지 클러스터링에 DBSCAN 방법을 사용하고 있지만 예기치 않은 결과가 발생합니다. 10 개의 이미지가 있다고 가정 해 봅시다.sklearn.cluster.DBSCAN 예기치 않은 결과가 발생합니다.
먼저, 루프의 이미지를 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의 간단한 invokation 있습니다
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]
입니까? 왜 모든 이미지를 하나의 클러스터에 넣을 까?