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
반응형
'Machine learning > Machine learning 강의' 카테고리의 다른 글
머신 러닝 기본#9 - 함수 개념 익히기 (0) | 2021.01.20 |
---|---|
머신 러닝 기본#8 - 선형대수학 총 정리 및 머신러닝에 필요한 이유 (0) | 2021.01.19 |
머신 러닝 기본#6 - 전치 행렬, 단위 행렬, 역행렬 (0) | 2021.01.19 |
머신 러닝 기본#5 - numpy로 행렬 연산하기 (0) | 2021.01.19 |
머신 러닝 기본#4 - 행렬의 덧셈과 곱셈 개념 잡기 (0) | 2021.01.19 |
댓글