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
'ProgramingTip' 카테고리의 다른 글
CSS 너비 100 % 또는 최대 너비 (픽셀) (0) | 2020.12.08 |
---|---|
몽구스에서 원시 mongodb을 수행하는 방법은 무엇입니까? (0) | 2020.12.08 |
인증을 위해 Jenkins의 그룹에 사용자를 만들고 추가하는 방법은 무엇입니까? (0) | 2020.12.08 |
타이밍 알고리즘 : C ++의 clock () 대 time () (0) | 2020.12.08 |
오른쪽의 matplotlib y 축 레이블 (0) | 2020.12.08 |