본문 바로가기
Machine learning/Machine learning 강의

머신 러닝 기본#7 - numpy로 전치행렬, 단위행렬, 역행렬

by grey-hat hacker 2021. 1. 19.
728x90

1. transpose() 함수를 사용하여 전치행렬을 구했다.  간단하여 A.T 만으로도 구현 가능하다. 

>>> import numpy as np
>>> A = np.array([[1,-1,2],[3,2,2],[4,1,2]])
>>> A
array([[ 1, -1,  2],
       [ 3,  2,  2],
       [ 4,  1,  2]])
>>> A_transpose = np.transpose(A)
>>> A_transpose
array([[ 1,  3,  4],
       [-1,  2,  1],
       [ 2,  2,  2]])
       
>>> A_transpose = A.T
>>> A_transpose
array([[ 1,  3,  4],
       [-1,  2,  1],
       [ 2,  2,  2]])

2. identity 함수를 사용하여 단위행렬을 구하였다. 

A 행렬 곱하기 I행렬을 곱하여 A행렬이 그대로 출력되는 것을 확인해 보았다. 

>>> I = np.identity(3)
>>> I
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
       
>>> A @ I
array([[ 1., -1.,  2.],
       [ 3.,  2.,  2.],
       [ 4.,  1.,  2.]])

 

3. pinv 함수를 사용하여 역행렬을 구하였는데 p라는 것은 역행렬이 없어도 유사한 값을 return 해달라는 것이다.

- 역행렬이 정상적으로 나왔는지 확인해보고자 검증을 해보았다. 

>>> A_inverse = np.linalg.pinv(A)
>>> A_inverse
array([[-0.2, -0.4,  0.6],
       [-0.2,  0.6, -0.4],
       [ 0.5,  0.5, -0.5]])
>>> A @ A_inverse
array([[ 1.00000000e+00,  7.77156117e-16, -8.88178420e-16],
       [ 0.00000000e+00,  1.00000000e+00, -8.88178420e-16],
       [ 0.00000000e+00,  4.44089210e-16,  1.00000000e+00]])

 

 

-- 실습

B^T \times (2 \cdot A^T) \times (3 \cdot C^{-1} + D^T)

B^T \times (2 \cdot A^T) \times (3 \cdot C^{-1} + D^T)

 

result = np.transpose(B) @ (2 * np.transpose(A)) @ (3 * np.linalg.pinv(C) + np.transpose(D))

 

 

728x90
반응형

댓글