イメージのクラスタリングに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]
私が間違って何をしますかですか?なぜそれはすべてのイメージを1つのクラスタに入れますか?