ProgramingTip

1D 숫자 배열 클러스터링

bestdevel 2020. 12. 8. 19:21
반응형

1D 숫자 배열 클러스터링


가능한 가능성 :
1 차원 데이터를 최적으로 클러스터링?

따라서 다음과 같은 배열이 가정 해 보겠습니다.

[1,1,2,3,10,11,13,67,71]

배열을 이와 같이 분할하는 편리한 방법이 있습니까?

[[1,1,2,3],[10,11,13],[67,71]]

어떤 질문을 하느냐 대부분의 사람들은 scipy 와 같은 점을 클러스터링하기 위해 k- 평균을 사용 제안 제안 , 이는 매우 혼란 스럽습니다. 또한 k- 평균이 2 차원 이상의 클러스터링에 더 적합하다고 생각합니다. 숫자에 따라 N 개의 배열을 여러 파티션 / 클러스터링으로 분할하는 방법이 있습니까?

일부 사람들은 엄격한 범위 분할을 제안하지만 항상 예상대로 결과를 제안합니다.


1 차원 문제에 다차원 클러스터링 알고리즘을 사용하지 않습니다. 단일 차원은 순진하게 생각하는 것 보다 훨씬 더 특별합니다. 실제로 정렬 할 수 있기 때문에 일이 훨씬 쉬워,집니다.

실제로 일반적으로 클러스터링이라고도 부르지 않지만 예를 들어 세분화 또는 자연스러운 중단 최적화입니다.

Jenks Natural Breaks 최적화 및 통계 방법 을 볼 수 있습니다 . Kernel Density Estimation 은 또한 강력한 통계적 배경을 가진 좋은 방법입니다. 밀도의 국소 최소값은 데이터를 클러스터로 분할 값 좋은 장소이며 통계적인 이유가 있습니다. KDE는 아마도 1 차원 데이터를 클러스터링하는 가장 좋은 방법 일 것입니다.

KDE를 사용하면 1 차원 데이터가 훨씬 더 잘한다는 것이 다시 분명해집니다. 1D에서는 국소 최솟값이 있습니다. 그러나 2D에서는 안장 지점과 "아마도"분할 지점이 있습니다. 안장 지점에 대한Wikipedia 그림을 참조하십시오. 플랫폼 이 클러스터를 분할하는 데 적합 할 수도 있습니다.


이산화 알고리즘을 사용할 수 있습니다. 1D 이산화 문제는 당신이 요구하는 것과 매우 유사합니다. 빈도, 비닝 전략 따라 컷오프 지점을 결정합니다.

weka 는 이산화 프로세스에서 다음 알고리즘을 사용합니다.

weka.filters.supervised.attribute.Discretize

Fayyad & Irani의 MDL 방법 또는 Kononeko의 MDL 기준을 사용합니다.

weka.filters.unsupervised.attribute.Discretize

간단한 비닝 사용

참고 URL : https://stackoverflow.com/questions/11513484/1d-number-array-clustering

반응형