<NAVER boostcourse>
에서 수강한 강의를 바탕으로 정리한 내용입니다.행렬은 벡터를 원소로 가지는 2차원 배열
행과 열이라는 index를 가짐
행렬의 특정 행(열)을 고정하면 행(열)벡터라 부름
Matrix는 같은 모양을 가지면 덧셈, 뺄셈, 성분곱 가능하며, 스칼라곱도 가능함
Matrix의 곱셈
: i번째 행 벡터와 j번째 열벡터 사이의 내적을 성분으로 가지는 행렬을 계산하는 것
- numpy에서는 @
연산을 사용함
Matrix의 내적
: i번째 행 벡터와 j번째 행 벡터 사이의 내적을 성분으로 가지는 행렬을 계산하는 것
- 넘파이의 np.inner
함수를 사용
*수학에서 말하는 내적과 다르므로 주의!
X = np.array([[1,-2,3],
[7,5,0],
[-2,-1,2]])
Y = np.array([[0,1,-1],
[1,-1,0]])
mul = X @ Y
> array([[-8, 6],
[5, 2],
[-5, 1]])
prd = np.inner(X, Y)
> array([[-5, 3],
[5, 2],
[-3, -1]])
역행렬이 존재하는 조건
1. 행과 열 숫자가 같음
2. 행렬 식(determinant)이 0이 아닌 경우
numpy.linalg.inv
로 역행렬을 구할 수 있음
만약 역행렬을 계산할 수 없다면, 유사역행렬(pseudo-inverse) 또는 무어-펜로즈(Moore-Penrose) 역행렬 를 이용할 수 있음
n≥m 인 경우 가 성립
n≤m 인 경우 만 성립
np.linalg.pinv
로 무어-펜로즈 역행렬을 구할 수 있음
np.linalg.pinv
를 이용하면 연립 방정식의 해를 구할 수 있음
** 식이 변수 개수보다 작거나 같아야 함
np.linalg.pinv
를 이용하면 선형모델의 회귀식을 찾을 수 있음
** 데이터가 특징 개수보다 같거나 많아야함