Loading...
2022. 1. 12. 22:46

선형변환으로서의 행렬이 가지는 의미

1. 선형변환으로 생각하는 행렬 행렬은 벡터공간에서 두 데이터 사이 연결관계를 나타내는 연산자로 생각할 수도 있다. (선형변환) 벡터 $x$에 행렬 $A$를 곱하여 다른 차원의 벡터 $z$로 변환시킴 기계학습의 선형모델들은 위와 같은 선형변환 행렬곱을 이용해서 데이터 $x$의 패턴($z$)을 추출하거나 압축시킨다. 행렬 A의 연산을 거꾸로 되돌리는 행렬이 A의 역행렬 $A$의 역행렬은 $A$의 행과 열의 숫자가 같고 $A$의 행렬식이 0이 아니어야 존재한다 2. np.linalg.inv() numpy의 np.linalg.inv()는 역행렬이 존재하는 행렬의 역행렬을 구해준다 컴퓨터 연산 오차로 인해 자기 자신과 역행렬을 곱해보면 정확히 항등행렬이 나오진 않고 비슷한 값으로 나온다 X와 np.linalg...

2022. 1. 11. 21:07

행렬의 기본 연산들

1. 전치행렬 전치행렬(transpose)은 행과 열의 index를 서로 뒤바꾼 행렬 2. 행렬의 기본 수학연산 같은 차원을 가지는 두 행렬은 대응하는 성분끼리 연산이 가능하다 3. 행렬의 곱셈 행렬의 일반적인 곱셈은 조금 특이하게 정의된다. 두 행렬 $X,Y$의 행렬곱 $XY$는 $X$의 열의 수와 $Y$의 행의 수가 같을 때 정의되고 $X$의 $i$번째 행벡터와 $j$번째 열벡터의 내적을 성분으로 갖는다. 행렬의 곱셈은 교환법칙이 성립하지 않는다 numpy array에서 두 행렬의 곱은 @연산자를 활용 import numpy as np X = np.array([[1,-2,3],[7,5,0],[-2,-1,2]]) Y = np.array([[0,1],[1,-1],[-2,1]]) X@Y ##matrix p..

2021. 12. 1. 23:59

Numpy 기초 8편

1. boolean index boolean array를 넣어 array를 추출함 condition을 넣어 condition에 맞는 array를 추출하는 방식 2. fancy index index array를 넣어 해당 index에 맞는 값들을 추출 index는 int로 선언해야 index로 인식함 3. data in&out loadtxt로 텍스트 파일을 열고 savetxt로 저장함 astype()은 원하는 type으로 바꿔줌 np.save를 통해 array를 pickle형태로 저장하고 다시 불러올 수 있음 array를 처음부터 다시 만들기 까다로울 때, 예상치 못한 상황이 발생할 때를 대비해서 저장해놓고 사용하면 편할 수 있음

2021. 12. 1. 23:42

Numpy 기초 7편

1. np.where() 1-1) np.where(,(True일때 출력),(False일때 출력)) 1-2) np.where() condition이 True인 index만을 차례대로 array로 반환 2. isnan & isfinite np.isnan() NaN인 값을 찾아 True, False array로 반환 np.isfinite() finite인 값 찾아 True, False array로 반환 3. argmax,argmin array내 최댓값 index 반환 >> argmax array내 최솟값 index 반환 >> argmin sorting한 index 반환 >>argsort a[np.argmin(a)] 하면 최솟값을 출력할 수 있음 비슷하게 a[a.argsort()] 하면 sorting한 arra..

2021. 12. 1. 02:45

numpy array와 pandas에서 var을 구할 때 차이점

numpy array가 다음과 같이 주어진다. 여기서 분산을 구하고자 하는데 numpy.var()을 이용하여 구할 수 있다. 그런데 위 array를 pandas의 series에 넣어본다면 이 상태에서 분산을 구할려면 .var()을 하면 구할 수 있다 두 방식에서 구한 var에 차이가 있다 분명 같은 값들이 들어간 array로 var을 구한건데 왜 차이가 있을까? 그것은 numpy array에서는 var을 biased estimator로 구하기 때문이다. 모든 데이터 편차제곱합을 개수 N으로 나눠서 구한다 반면 pandas의 dataframe에서 var은 unbiased estimator로 구하기 때문이다. 그래서 두 값이 같게 만들려면 pd.Series에서 var의 옵션에 ddof=0으로 두면 두 값이 ..

2021. 11. 30. 18:47

Numpy 기초 6편

1. time array 연산의 시간을 비교 일반적으로 for loop가 가장 느리고 다음으로 list comprehension이 빠르고 numpy가 가장 빠르다 numpy는 c로 구현하여 연산속도의 이점을 확보하고 dynamic typing을 포기 대용량 계산에서 numpy가 이득 concatenate같은 단순 할당연산에는 속도 이점이 없음 위에서부터 for loop연산,list comprehension연산,numpy 연산 numpy가 압도적으로 빠르다 2. comparison 단순히 array를 scalar와 비교하면 array 원소 모두에 대해 comparison하여 boolean array로 반환 3. any,all np.any() array내 모든 원소에 대해 하나라도 True이면 True np..