반응형
축약 된 거리 행렬 Y를 반환합니다. 각 및 (여기서)에 대해 메트릭 dist (u = X [i], v = X [j])가 계산되고 항목 ij에 저장됩니다.
in
은 i * j
를 의미한다고 생각했습니다. 하지만 내가 틀렸을지도 모른다고 생각합니다. 치다
X = array([[1,2], [1,2], [3,4]])
dist_matrix = pdist(X)
문서에는 dist (X [0], X [2])
가 dist_matrix [0 * 2]
여야한다고 나와 있습니다. 그러나 dist_matrix [0 * 2]
는 2.8이 아닌 0입니다.
i
와 j
가 주어 졌을 때 두 벡터의 유사성에 접근하기 위해 사용해야하는 공식은 무엇입니까?
해결 방법
다음과 같이 볼 수 있습니다. x
가 m x n이라고 가정합니다. 한 번에 두 개씩 선택할 수있는 m
행의 가능한 쌍은 itertools.combinations (range (m), 2)
입니다 (예 : m = 3 <). / 코드> :
>>> import itertools
>>> list(combinations(range(3),2))
[(0, 1), (0, 2), (1, 2)]
따라서 d = pdist (x)
인 경우 combinations (range (m), 2))
의 k
번째 튜플은 d [k]
와 관련된 x
행.
예:
>>> x = array([[0,10],[10,10],[20,20]])
>>> pdist(x)
array([ 10. , 22.36067977, 14.14213562])
첫 번째 요소는 dist (x [0], x [1])
, 두 번째 요소는 dist (x [0], x [2])
, 세 번째 요소는 dist (x [1], x [2])
.
또는 정사각형 거리 행렬의 위쪽 삼각형 부분에있는 요소로 1D 배열로 함께 연결되어 볼 수 있습니다.
예 :
>>> squareform(pdist(x))
array([[ 0. , 10. , 22.361],
[ 10. , 0. , 14.142],
[ 22.361, 14.142, 0. ]])
>>> y = array([[0,10],[10,10],[20,20],[10,0]])
>>> squareform(pdist(y))
array([[ 0. , 10. , 22.361, 14.142],
[ 10. , 0. , 14.142, 10. ],
[ 22.361, 14.142, 0. , 22.361],
[ 14.142, 10. , 22.361, 0. ]])
>>> pdist(y)
array([ 10. , 22.361, 14.142, 14.142, 10. , 22.361])
참조 페이지 https://stackoverflow.com/questions/13079563
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python __str__ 대 __unicode__ (0) | 2021.02.03 |
---|---|
파이썬 목록에서 상위 N 개 값의 인덱스 가져 오기 (0) | 2021.02.03 |
파이썬 Flask보기에서 JSON 응답 반환 (0) | 2021.02.02 |
파이썬 Python 전역 / 지역 변수 (0) | 2021.02.02 |
파이썬 문자열의 유니 코드 문자를 다른 파이썬으로 바꾸는 방법은 무엇입니까? (0) | 2021.02.02 |
댓글