Scikit Learn의 군집 관성 수식


9

팬더와 scikit learn을 사용하여 파이썬으로 kmeans 클러스터링을 코딩하고 싶습니다. 좋은 k를 선택하기 위해 Tibshirani와 al 2001 ( pdf ) 의 Gap Statistic을 코딩하고 싶습니다 .

scikit의 inertia_ 결과 를 사용 하고 모든 거리 계산을 다시 코딩하지 않고도 갭 통계 공식을 조정할 수 있는지 알고 싶습니다 .

scikit에 사용 된 관성 공식을 알고 있거나 높은 수준의 거리 함수를 사용하여 간격 통계를 쉽게 코딩하는 방법을 알고 있습니까?


나는이 질문에 CV에 대한 주제가되기에 충분한 통계적 내용이 있다고 생각하지만 상당히 정교한 프로그래밍 및 Python 지식도 필요하다는 점에 유의하십시오. 좋은 답변을 얻기가 어려울 수 있습니다. 의사 코드 도 요청하거나 기꺼이 해결하고 싶거 나이 질문을 두 부분으로 나눠야 할 수도 있습니다. 여기서는 통계 측면에 대해 1 개 , 파이썬 프로그래밍 측면에 대해 스택 오버플로 에 1 개를 나누어야합니다 . (아마도, 확실하지 않지만, 나는 단지 당신에게 공정한 경고를주고 싶습니다; 우리는 어떻게 진행되는지 볼 것입니다.)
gung-Reinstate Monica

1
이 질문은 "관성"이라는 용어를 정의해야합니다. 안에 동전 모양으로 보입니다 python.
ttnphns

답변:


6

kmeans 클러스터링에 대한 답변을 찾았습니다.

git 소스 코드를 살펴보면 scikit learn의 경우 관성이 가장 가까운 중심, 즉 지정된 클러스터에 대한 각 점의 제곱 거리의 합으로 계산됩니다. 그래서I=i(d(i,cr)) 어디 cr 할당 된 군집의 중심 제곱 거리입니다.

이제 격차 통계의 공식은

케이=아르 자형=1케이1(2아르 자형)아르 자형
어디 아르 자형 클러스터의 모든 점 사이의 제곱 거리의 합입니다. 아르 자형.

소개함으로써 +, 제곱 거리 공식에서 클러스터의 중심 아르 자형 좌표), 나는 관성에 해당하는 용어 (scikit에서와 같이) + 각각의 경우 사라지는 용어가 있습니다. 각 클러스터의 무게 중심 (킬로미터 단위)입니다. 그래서 나는 추측케이 사실 scikit Inertia입니다.

여전히 두 가지 질문이 있습니다.

  1. 내 미적분이 정확하다고 생각하십니까? (예를 들어, 계층 적 클러스터링을 보유하는지 여부는 알 수 없습니다.)
  2. 위의 내용이 정확하다면 (통계와 클러스터링 사이의 로그 관성의 차이로) 갭 통계를 코딩했으며 특히 홍채 데이터 세트에서 제대로 수행되지 않습니다.

2
답변에 질문을하지 않는 것이 가장 좋습니다. 이것이 실제로 귀하의 질문에 대한 답변이 아니라 실제 질문을 명확히하기위한 부분적인 해결책 일 경우, 귀하의 질문을 편집하고이 정보를 붙여 넣는 것이 좋습니다.
gung-Reinstate Monica

1
@Scratch Iris 데이터 세트에서 작동하기 위해 갭 통계를 파이썬으로 구현 한 적이 있습니까? 나는 같은 문제로 고심하고 있습니다.
Zelazny7

예, 몇 달 전에 코드를 작성했습니다. 어떻게 보낼 수 있습니까?
스크래치

1
공식이 아니어야합니다
케이=아르 자형=1케이아르 자형(2아르 자형)
?
Biswanath
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.