-
[Python] outlier 찾기, 마할라노비스 거리 계산 (실전)Programming/Python 2022. 12. 28. 13:51
마할라노비스 거리에 대한 설명은 이전 글 참조!
import numpy as np from scipy.spatial import distance
넘파이와 마할라노비스 거리 계산을 위한 scipy 모듈을 추가한다
만약 에러가 나온다면 터미널에 pip install scipy로 모듈을 다운받는다.
X = np.zeros((len(dy_o),2)) for a in range(0, len(dy_o)): X[a][0] = a X[a][1] = dy_o[a]
마할라노비스 거리 계산하는 함수의 사용을 위해 데이터를 array 형태로 만들어주어야 한다.
나는 x,y를 가지는 2차원 배열 형태로 만들어 주기 위해 위처럼 작성하였다.
이미 가지고 있는 데이터 array인 dy_o갯수만큼의 행을 가진 영행렬로 초기화를 한 이후에
x값은 index, y값은 데이터를 넣어준다.
(더 좋은 방법이 있다면 댓글로 알려주세요! - 파이썬 초보-)
print(X)해서 배열이 잘 들어갔는지 확인해준다.
X_cdist = distance.cdist(X, X, metric = 'mahalanobis') print(X_cdist.shape) print(X_cdist)
마할라노비스 거리 구하는 함수는 꽤 간단하다...
역시 파이썬...!
구해진 X_cdist를 출력해보니 61x61 shape의 배열이 출력되었다.
내가 초기에 가진 데이터 dy_o의 사이즈가 61개 였는데(61개의 점)
각각의 점으로부터의 모든 마할라노비스 거리가 계산된 것이다.
61*61이면 꽤나 큰 데이터라서..
이걸 어떻게 활용할지는 아직 고민중이다.
애초에 비선형적 데이터라서 이걸 쓰는게 맞는지도 의문이지만 일단 거리 구하는 방법을 정리해 놓으면 나중에 또 쓸모가 있겠지.
참고
Python에서 Mahalanobis 거리 계산 | Delft Stack
R, Python 분석과 프로그래밍의 친구 (by R Friend) :: [Python SciPy] 원소 간 거리 계산하기 (tistory.com)
'Programming > Python' 카테고리의 다른 글
[Python] File / Exception / Log (0) 2023.08.29 [Python] String, Function, Scoping rule, 함수 작성 가이드라인 (0) 2023.08.15 [Python] Outlier(이상치) 찾기 , 마할라노비스 거리 (이론) (0) 2022.12.28 [Python] print .format 자릿수 맞추기, 오른정렬, 소수점 출력 (0) 2022.09.02 [Python] curve_fit : data로 그래프 그리고 fitting하기 (0) 2022.07.19