개발공부/SK Networks Family AI bootcamp 강의노트

16일차 [ numpy 심화 ]

HyunJung_Jo 2025. 2. 6. 16:48

수업자료

https://github.com/good593/class_ML/blob/main/1.%20Basic%20ML/1.%20numpy/2.%20Numpy%20%EC%8B%AC%ED%99%94.ipynb

 

class_ML/1. Basic ML/1. numpy/2. Numpy 심화.ipynb at main · good593/class_ML

Contribute to good593/class_ML development by creating an account on GitHub.

github.com

 

1. 선형 대수학

1) 선형독립/선형 종속 

  • 직교: 벡터 각 90도 , 서로 독립적
  • 선형 독립: 두 벡터 서로 독립적 방향 가짐. 0~180 사이
  • 선형 종속: 일직선상에 놓임, 하나의 벡터는 다른 벡터 상수배

2) 벡터 연산

  • 두 개의 벡터 연산시  크기가 같아야 한다.

곱셈

  • norm: 벡터 크기, [1,2] = sqrt(1*2+2*2) = sqrt(5) 
  • 내적:
    • 두개 벡터간의 유사도(상관계수) 크기
    • v2를 v1기준으로 코사인 변환하여 v1차원에서 서로 유사도 비교 

3) 행렬 연산

  • data+ones
  • np.add(data,ones)

빼기,곱, 나누기

  • np.subtract(), np.multiply(), np.divide()

스칼라곱

 

행렬곱 

행렬곱에선 (m x n) * (n x p ) = (m x p)

 

4) 선형 변환

  • vector 변환
  • np.add(),np.subtract(), np.multiply(), np.divide()
  • arr.max() (전체) ,arr.max(axis=0), arr.min(axis=1): 축에 따라서 반환 값이 다름 
  • arr.sum(), arr.sum(axis=0), arr.sum(axis=1)
  • broadcasing : arr에다 숫자 곱하기

2. 선형대수 함수 (벡터/행렬연산)

Norm

모델 loss 가 벡터로 나오는데, 그걸 스칼라로 줄여서 볼 수 있는게 Norm이다.

  • L1 Norm :
    • 벡터내의 두 개 성분 차이의 절대값 취해서 합한 것
    • np.linalg.norm(arr,1)
    • 맨하탄, 여러개 grid path 발생 가능
  • L2 Norm
    • 백터내의 두 개 성분의 차이의 제곱합에 루트 씌운 것
    • np.linalg.norm(arr)
    • 유클리드, 하나의 grid path, 제곱합 루트라 outlier에 더 민감

내적 연산:

  • 두 벡터에 대한 차이를 스칼라로 표현
  • 서로 다른 차원으로 표현되어야 내적 연산 가능
  • arr:    x & y,    x.dot(y) (내적)
  • x.T (transpose)

역행렬

  • Y=inv(X)
  • X.dot(Y) >> 단위행렬

3. 난수 (random number)

  • np.random.seed(0) > seed 고정해서 주피터 노트북 내에서 매 셀마다 고정하여 결과가 일정하게 한다.
  • np.random.rand(100) : 난수 생성
  • np.random.randint(10,20,1000) : 정수 난수 생성
  • np.random.randn(1000): 정규분포 난수
  • 4* np.random.standard_normal(100) + 1 : 표준 정규분포 갖는 난수, 표편 4, 평균 1
  • np.random.noraml(3,2,5000) 정규분포에서 난수 생성 (평균,표준편차,개수)
  • np.random_sample() : 임의 실수 생성
  • np.random.choice() : 샘플 생성