본문 바로가기
반응형

행렬15

[R강의] 데이터프레임을 행렬로 바꾸는 방법 먼저 데이터프레임을 하나 정의합시다. > md=data.frame(C1=c(1,2,3),C2=c(10,20,30)) > md C1 C2 1 1 10 2 2 20 3 3 30 행렬로 바꾸는 함수는 as.matrix 입니다. > md_m=as.matrix(md) > md_m C1 C2 [1,] 1 10 [2,] 2 20 [3,] 3 30 잘 바뀌었는지 확인해봅시다. > class(md_m) [1] "matrix" "array" 2021. 10. 12.
[R 코딩] 행렬의 고유값과 고유벡터 행렬은 벡터의 선형변환입니다. 벡터에 행렬을 곱하면, 크기와 방향이 달라집니다. 하지만 어떤 경우에는 방향이 아니라 크기만 달라지는 경우가 있습니다. 이때 아래와 같은 등식이 성립합니다. A는 행렬, x는 벡터, 람다는 상수입니다. $$A\vec{x}=\lambda \vec{x}$$ 이를 행렬 입장에서 생각해봅시다. 어떤 행렬 A가 있습니다. 이 행렬에 어떤 벡터를 곱하면 벡터의 크기와 방향이 달라집니다. 그런데 어떤 벡터는 이 행렬과 곱해져도 방향이 변하지 않고 크기만 변합니다. $$A\vec{x}=\lambda \vec{x}$$ 이 벡터를 행렬 A의 '고유벡터'라고 합니다. 이때 크기 변화에 대한 상수 λ 를 '고유값' 이라고 합니다. R에서 어떤 행렬의 고유값과 고유벡터를 구하는 함수는 eigen .. 2020. 12. 24.
[R코딩] 행렬의 특잇값 분해 (svd) 행렬의 특잇값 분해는 아래와 같이 행렬 A를 U,D,V 세 행렬의 곱으로 나타내는 것입니다. (보통 D 대신 Σ 를 사용하는데, R 함수에서는 D를 사용합니다.) $A=UDV^{T}$ 특잇값 분해는 영어로 singular value decomposition 입니다. 줄어서 SVD 라고 부릅니다. R 함수 이름도 svd 입니다. singular value 를 한글로 옮긴 것이 '특잇값' 입니다. A,U,D,V 에 대한 설명은 아래와 같습니다. A : NxM 크기의 행렬 U : N차원 정방 직교 행렬 D : 대각행렬 V : M차원 정방 직교 행렬 아래는 R 예시입니다. > A=matrix(1:6,2) > A [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > svd(A) $d [1] 9.5.. 2020. 12. 22.
[R코딩] 행렬을 이용한 연립방정식의 해 (solve) 아래와 같이 미지수가 3개인 연립방정식이 있다고 합시다. $$ a_{11}x+a_{12}y_+a_{13}z=b_{1}\\ a_{21}x+a_{22}y_+a_{23}z=b_{2}\\ a_{31}x+a_{32}y_+a_{33}z=b_{3} $$ 행렬형태로 바꾸면 아래와 같습니다. $$ \begin{bmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33} \end{bmatrix} \begin{bmatrix} x\\ y\\ z \end{bmatrix} = \begin{bmatrix} b_{1}\\ b_{2}\\ b_{3} \end{bmatrix} $$ 간단하게 아래와 같이 나타냅시다. $$[a]X=[b]$$ 이 .. 2020. 12. 21.
[R코딩] 행렬 열별 평균 구하기 (colMeans) R에서 행렬 열 별로 평균을 구하는 함수는 colMeans 입니다. 행렬을 하나 정의합시다. > m=matrix(1:12,3) > m [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 colMeans 함수를 이용하여 열별로 평균을 구해봅시다. > colMeans(m) [1] 2 5 8 11 2020. 12. 21.
[R코딩] 행렬 열 별로 합 구하기 (colsums) 행렬에서 열 별로 합을 구하는 함수는 colSums 입니다. 행렬을 하나 정의합시다. > m=matrix(1:12,3) > m [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 colSums 함수를 이용하여 열 별로 합을 구해봅시다. > colSums(m) [1] 6 15 24 33 2020. 12. 21.
[R코딩] 행렬의 행 별로 합 구하기 (rowSums) 행렬에서 행 별로 합을 구하는 함수는 rowSums 입니다. 행렬을 하나 정의합시다. > m=matrix(1:12,3) > m [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 rowSums 함수를 이용하여 행 별로 합을 구해봅시다. > rowSums(m) [1] 22 26 30 2020. 12. 21.
[R코딩] 행렬을 열 방향으로 연결 (cbind) R행서 행렬을 열 방향(좌->우)으로 연결할 때는 cbind함수를 사용합니다. 두 행렬이 열방향으로 연결되려면 두 행렬의 행의 크기가 같아야합니다. 두 행렬을 정의해봅시다. > m1=matrix(1:6,2) > m1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > m2=matrix(1:4,2) > m2 [,1] [,2] [1,] 1 3 [2,] 2 4 cbind 함수를 이용하여 연결해봅시다. > cbind(m1,m2) [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 1 3 [2,] 2 4 6 2 4 2020. 12. 21.
[R코딩] 행렬을 행 방향으로 연결 (rbind) 두 행렬을 행 방향(위->아래)으로 연결할 때는 rbind 함수를 사용합니다. 두 행렬을 정의해봅시다. 행 방향으로 연결하려면 두 행렬의 열의 크기가 같아야 합니다. > m1=matrix(1:6,2) > m1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > m2=matrix(1:9,3) > m2 [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 rbind 함수를 이용하여 연결해봅시다. > rbind(m1,m2) [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 [3,] 1 4 7 [4,] 2 5 8 [5,] 3 6 9 2020. 12. 21.
[R코딩] 행렬의 곱 (%*%) R에서 행렬의 곱을 수행하는 함수는 %*% 입니다. 행렬을 하나 정의합시다. > m1=matrix(1:4,2) > m1 [,1] [,2] [1,] 1 3 [2,] 2 4 m1과 m1을 곱하는 행렬의 곱을 해봅시다. > m1%*%m1 [,1] [,2] [1,] 7 15 [2,] 10 22 행렬과 행렬을 곱할 때는, 앞 행렬의 열의 수와 뒤 행렬의 행의 수가 같아야 합니다. 두 행렬을 정의합시다. m2 는 2행3열, m3는 3행3열의 행렬입니다. > m2=matrix(1:6,2) > m2 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > m3=matrix(1:9,3) > m3 [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 m2의 열의 수와 m3의 행.. 2020. 12. 21.
[R 코딩] 전치행렬 구하는 함수 (t) R에서 전치행렬을 구할 때는 t 함수를 사용합니다. 행렬을 하나 정의합시다. > m=matrix(1:4,2) > m [,1] [,2] [1,] 1 3 [2,] 2 4 전치행렬을 구해봅시다. > t(m) [,1] [,2] [1,] 1 2 [2,] 3 4 2020. 12. 18.
[R 코딩] 역행렬 구하는 함수 (solve) R에서 역행렬을 구할 때는 solve 함수를 사용합니다. 행렬을 하나 정의합시다. > m=matrix(1:4,2) > m [,1] [,2] [1,] 1 3 [2,] 2 4 역행렬을 구해봅시다. > m_inv=solve(m) > m_inv [,1] [,2] [1,] -2 1.5 [2,] 1 -0.5 역행렬이 맞는지 확인합시다. 둘을 곱하여 단위행렬이 나오면 됩니다. > m_inv=solve(m) > m_inv [,1] [,2] [1,] -2 1.5 [2,] 1 -0.5 2020. 12. 18.
[R 코딩] 모든 원소가 0인 행렬 만들기 파이썬 넘파이나 매트랩의 zeros 와 같은 역할입니다. R에서 행렬을 정의할 때, 벡터가 들어가는 자리에 0을 넣으면 됩니다. 3행 5열의 zeros 행렬을 만들어봅시다. > matrix(0,3,5) [,1] [,2] [,3] [,4] [,5] [1,] 0 0 0 0 0 [2,] 0 0 0 0 0 [3,] 0 0 0 0 0 2020. 12. 18.
[R 코딩] 배열,행렬 생성 시 사용 가능한 반복규칙 배열에서는 아래와 같은 생성이 가능합니다. > ar=array(c(1,2,3,4),dim=c(3,5)) > ar [,1] [,2] [,3] [,4] [,5] [1,] 1 4 3 2 1 [2,] 2 1 4 3 2 [3,] 3 2 1 4 3 전체 차원의 원소수보다 적게 입력해도, 행방향으로 반복하여 입력합니다. 행렬에서도 가능합니다. > m=matrix(c(1,2,3,4),3,5) Warning message: In matrix(c(1, 2, 3, 4), 3, 5) : data length [4] is not a sub-multiple or multiple of the number of rows [3] > m [,1] [,2] [,3] [,4] [,5] [1,] 1 4 3 2 1 [2,] 2 1 4 3 2 .. 2020. 12. 15.
[R 코딩] matrix 함수 없이 벡터에서 행렬만들기 보통 행렬은 아래와 같이 만듭니다. > m1=matrix(c(1,2,3,4),2) > m1 [,1] [,2] [1,] 1 3 [2,] 2 4 위 방법 말고 벡터를 정의한 뒤 dim 함수를 이용하여 만들 수도 있습니다. > v1=c(1,2,3,4) > dim(v1)=c(2,2) > v1 [,1] [,2] [1,] 1 3 [2,] 2 4 2020. 12. 15.
반응형