NumPy 기초·연습 문제

상관 행렬 (Correlation Matrix)

문제 설명PROBLEM

preview

상관 행렬 (Correlation Matrix)

34번 공분산 행렬스케일에 민감 — 원 단위(kg vs g)가 다르면 값이 크게 흔들립니다. 상관 행렬은 각 성분을 해당 특성의 표준편차로 나눠 스케일 불변 지표로 만듭니다:

corr(X)ij=cov(X)ijσiσj\text{corr}(X)_{ij} = \frac{\text{cov}(X)_{ij}}{\sigma_i \sigma_j}

  • 대각 = 1 (자기 자신과 완전 상관)
  • 값 범위: [1,1][-1, 1]
  • 0 근처 = 선형 상관 없음

EDA 초반에 "어떤 feature 들이 서로 관련 있나" 볼 때 첫 번째로 보는 지표.

과제

함수 correlation_matrix(X) 를 완성하세요.

  • 입력: (N, D) 2D 배열.
  • 반환: (D, D) 상관 행렬.
  • 힌트: 공분산 / 외적(σ · σ.T).

테스트 케이스

#이름검증
1shape (D, D)정확
2대각 = 1np.diag(result) ≈ 1
3대칭result == result.T
4값 범위 [-1, 1]모든 원소
5np.corrcoef 와 일치무작위 데이터
개념 노트와 실수 포인트

NumPy 기초

  • ⚠️ axis 헷갈림: axis=0 은 행을 가로질러 → 열별 결과, axis=1행별 결과.
  • 브로드캐스팅: shape 를 뒤에서부터 맞춤(1 또는 같은 크기).
  • 반복문 대신 벡터화 연산. @(행렬곱) 와 *(요소곱) 구분.