sklearn.clustering.DBSCAN への入力を前処理する必要がありますか?
例http://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html#example-cluster-plot-dbscan-pyでは、入力サンプル X 間の距離が計算され、正規化されます。
D = distance.squareform(distance.pdist(X))
S = 1 - (D / np.max(D))
db = DBSCAN(eps=0.95, min_samples=10).fit(S)
v0.14 の別の例 ( http://jaquesgrobler.github.io/online-sklearn-build/auto_examples/cluster/plot_dbscan.html ) では、いくつかのスケーリングが行われます。
X = StandardScaler().fit_transform(X)
db = DBSCAN(eps=0.3, min_samples=10).fit(X)
後者の例に基づいてコードを作成し、このスケーリングでインプレッション クラスタリングがより適切に機能するようにしました。ただし、このスケーリングは「平均を取り除き、単位分散にスケーリングすることで特徴を標準化します」。2d クラスターを見つけようとします。クラスタを正方形の領域に分散させた場合、たとえば 100x100 としましょう。スケーリングに問題はありません。ただし、800x200 などの長方形の領域に分布している場合、スケーリングによってサンプルが「圧縮」され、サンプル間の相対距離が 1 次元で変更されます。これはクラスタリングを悪化させますよね?または、私は理解していますか?違う?なんらかの前処理を適用する必要がありますか、それとも単に「生」データを入力するだけでよいですか?