sklearn.clustering.DBSCAN에 대한 입력을 사전 처리해야합니까? 예에서 scikit-learn에서 입력 DBSCAN을 축척하는 방법
입력 X를 계산 샘플 정규화 사이 http://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html#example-cluster-plot-dbscan-py 거리 : v0.14 대한 또 다른 예에서D = distance.squareform(distance.pdist(X))
S = 1 - (D/np.max(D))
db = DBSCAN(eps=0.95, min_samples=10).fit(S)
(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)
I 후자의 예제를 기반으로 내 코드를 만들고이 스케일링으로 인상 클러스터링이 잘 작동하도록하십시오. 그러나이 스케일링은 "단위 분산에 대한 평균 및 스케일링을 제거하여 피쳐를 표준화합니다". 나는 2d 클러스터를 찾으려고 노력한다. 제 클러스터가 제곱 된 영역에 분산되어 있다면 - 100x100으로 스케일링에 아무런 문제가 없다고합시다. 그러나,가 사각형 영역에 분포되는 경우. 800x200 스케일링은 샘플을 '압축'하고 한 차원에서 상대 샘플 간의 거리를 변경합니다. 이것은 클러스터링을 악화시키지 않습니까? 아니면 sth을 이해하고 있는가? 잘못된? 일부 사전 처리를 적용해야합니까, 아니면 간단히 '원시'데이터를 입력 할 수 있습니까?
빠른 답장을 보내 주셔서 감사합니다.나는 무작위로 움직일 수있는 점멸하는 광원을 확인하여 가우시안 번짐을 유발하는 것을 원합니다. 또한 나는 소리가 겹쳐있다. 현재는 깜박임 강도를 무시하고 깜박임 이벤트의 2 차원 위치로만 피드합니다. 유클리드 거리가 괜찮다고 생각하니? 당신의 대답에서 저는 제 경우에 데이터를 전처리 할 필요가 없다는 것을 이해합니다 (nm 위치). 그러나 sklearn 구현은 어떨까요? 그것은 실제로 입력과 유사성을 필요로합니까 아니면 그냥 위치를 부여 할 수 있으며 유클리드 거리 측정 자체를 적용 할 수 있습니까? – Alex
x와 y에 균등 한 간격의 픽셀이 있으면 Euclidean을 정규화하고 사용하지 마십시오. sklearn에 관해서는 문서와 소스 코드를 파헤쳐 야합니다. 원시 데이터를 피드하면 유클리드 거리 매트릭스를 자체적으로 계산합니다. (그러나 가속을 위해 인덱스를 사용하지 마십시오. ELKI를 사용하면 인덱스가 훨씬 빨라야합니다.) –
감사합니다. ELKI를 살펴보고 sklearn 문서를 통해 자신을 파헤쳐 보겠습니다. – Alex