문제

다음과 같은 문제가 있습니다. 주요 문제를 제기하기 위해 초록을 만들었습니다.

나는 각각 10 점이 있으며, 이는 다른 각각과 약간 떨어져 있습니다. 나는 원한다

  1. 클러스터의 중심을 찾을 수있어서 서로 지점까지의 쌍 거리가 최소화되는 지점을 찾으십시오.
    p (j) ~ p (k)가 j와 k의 쌍 거리를 나타냅니다.
    P (i)는 클러스터의 중심점 IFF P (i) st Min [sum (p (j) ~ p (k))] 모두 0 <j, k <= n 여기서 클러스터에 n 포인트가 있습니다.
  2. 클러스터의 데이터 포인트 수가 일부 임계 값 t보다 높으면 클러스터를 두 클러스터로 분할하는 방법을 결정하십시오.

이것은 유클리드 공간이 아닙니다. 그러나 거리는 다음과 같이 요약 될 수 있습니다 -P (i)는 점 I입니다.

       p(1)    p(2)    p(3)    p(4)    p(5)    p(6)    p(7)    p(8)    p(9)    p(10)
p(1)    0       2       1       3       2       3       3       2       3        4
p(2)    2       0       1       3       2       3       3       2       3        4
p(3)    1       1       0       2       0       1       2       1       2        3
p(4)    3       3       2       0       1       2       3       2       3        4      
p(5)    2       2       1       1       0       1       2       1       2        3   
p(6)    3       3       2       2       1       0       3       2       3        4   
p(7)    3       3       2       3       2       3       0       1       2        3  
p(8)    2       2       1       2       1       2       1       0       1        2 
p(9)    3       3       2       3       2       3       2       1       0        1
p(10)   4       4       3       4       3       4       3       2       1        0 

이 클러스터의 중심 지점이 어느 것을 계산합니까?

도움이 되었습니까?

해결책

내가 이것을 이해하는 한 이것은 k처럼 보이며 클러스터링을 의미하며, 당신이 찾고있는 것은 일반적으로 '메도이드'라고합니다.

여기를 봐: http://en.wikipedia.org/wiki/medoids 또는 여기 : http://en.wikipedia.org/wiki/k-medoids

다른 팁

나는 완전한 어리 석음을 나타 내기 직전에 오는 프리슨을 가질 수 있습니다. 그러나 이것이 무자비한 힘으로 쉽게 생산되지 않습니까? 파이썬에서 :

distances = [
[ 0 , 2 , 1 , 3 , 2 , 3 , 3 , 2 , 3 , 4 , ],
[ 2 , 0 , 1 , 3 , 2 , 3 , 3 , 2 , 3 , 4 , ],
[ 1 , 1 , 0 , 2 , 0 , 1 , 2 , 1 , 2 , 3 , ],
[ 3 , 3 , 2 , 0 , 1 , 2 , 3 , 2 , 3 , 4 , ],
[ 2 , 2 , 1 , 1 , 0 , 1 , 2 , 1 , 2 , 3 , ],
[ 3 , 3 , 2 , 2 , 1 , 0 , 3 , 2 , 3 , 4 , ],
[ 3 , 3 , 2 , 3 , 2 , 3 , 0 , 1 , 2 , 3 , ],
[ 2 , 2 , 1 , 2 , 1 , 2 , 1 , 0 , 1 , 2 , ],
[ 3 , 3 , 2 , 3 , 2 , 3 , 2 , 1 , 0 , 1 , ],
[ 4 , 4 , 3 , 4 , 3 , 4 , 3 , 2 , 1 , 0 , ],
]

currentMinimum = 99999

for point in range ( 10 ) :
    distance_sum = 0
    for second_point in range ( 10 ) :
        if point == second_point : continue
        distance_sum += distances [ point ] [ second_point ]
    print '>>>>>', point, distance_sum 

    if distance_sum < currentMinimum :
        currentMinimum = distance_sum 
        centre = point

print centre

ㅏ)

  • 모든 거리의 중간 값 또는 평균 값을 찾으십시오. = Avgall
  • 각 P에 대해 다른 기계와 평균 거리를 찾으십시오. = AVGP (I)
  • 더 가까운 것을 중심으로 선택하십시오. avgall ~ = avgp (i)

b) 지금은 전혀 모른다 ..

어쩌면 각 p에 대해 더 가까운 기계를 찾으십시오.

이 논리에 의해 그래프를 만듭니다.

어쨌든 (아직 모르겠지만) 그래프를 나눕니다.

당신이하려는 일 또는 적어도 (b)는 클러스터 분석에 속합니다. 데이터 포인트 (예 : N 차원 공간의 지점)가 그룹 또는 클러스터로 나뉘어지는 수학 / 통계 / 계량 학체의 분기. 이것을하는 방법은 사소한 질문이 아니며, 많은 가능한 방법이 있습니다.

더 읽어보십시오 클러스터 분석에 관한 Wikipedia 기사.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top