반응형
아래와 같이 5개의 점이 있다고 합시다.
P1=c(1,2,3)
P2=c(3,5,2)
P3=c(5,5,4)
P4=c(1,4,7)
P5=c(2,2,4)
이들 중 어느 두 점이 가장 가까운 거리에 있는지 알고 싶은 상황입니다. 일반적으로 알고 있는 유클리드 거리가 아닌 코사인 거리를 행렬 형태로 출력해보겠습니다. 코사인 각도는 원점과 각 점을 잇는 벡터들 사이 각도의 코사인 값입니다.
먼저 위 점들을 하나의 행렬로 묶어줍니다.
mat1=matrix(c(P1,P2,P3,P4,P5),byrow=TRUE,nrow=5)
> mat1
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 3 5 2
[3,] 5 5 4
[4,] 1 4 7
[5,] 2 2 4
코사인 거리를 계산할 때는 dist 함수에서 method 를 cosine 으로 설정해주면 됩니다. 이때 사용하는 dist 함수는 base 패키지의 함수가 아니라, proxy 패키지의 dist 함수입니다.
library(proxy)
> dist(mat1,method='cosine')
1 2 3 4
2 0.17624553
3 0.11176521 0.04153232
4 0.01307246 0.26118117 0.19696970
5 0.01801949 0.20528059 0.09546597 0.04521408
P2와 P3사이의 코사인거리가 가장 가깝습니다.
반응형
'R 주제 > 통게분석(임시)' 카테고리의 다른 글
[R강의] 999. 평균절대편차, 중앙값절대편차 구하는 법 (0) | 2022.04.30 |
---|---|
[R강의] 140. For 문을 While 문으로 바꾸는 방법 (0) | 2022.04.28 |
R의 lapply 함수(리스트에 원하는 함수를 원하는 방향으로 적용) (0) | 2021.03.18 |
R의 apply 함수(함수를 배열에 원하는 방향으로 적용) (0) | 2021.03.18 |
R에서 날짜 데이터의 연산하기 (0) | 2021.03.18 |
댓글