본문 바로가기
Python/numpy

파이썬 numpy.linalg.svd 함수 활용하기

by PySun 2024. 10. 22.
반응형

파이썬 Numpy의 `numpy.linalg.svd` 함수 소개

Numpy는 과학 계산을 위한 강력한 라이브러리로, 다양한 선형대수 관련 함수들을 제공합니다. 그 중 `numpy.linalg.svd` 함수는 특이값 분해(Singular Value Decomposition, SVD)를 수행하는 데 사용됩니다. 이 함수는 주어진 행렬을 세 개의 행렬의 곱으로 분해하여 반환합니다.

`numpy.linalg.svd` 함수란?

`numpy.linalg.svd` 함수는 행렬을 세 개의 행렬의 곱으로 분해하여 반환합니다:

  • \( A = U \cdot \Sigma \cdot V^T \)
  • 여기서, \( U \)는 직교 행렬(orthogonal matrix), \( \Sigma \)는 대각 성분이 특이값(singular value)인 직사각 대각행렬(diagonal matrix), \( V^T \)는 \( V \)의 전치 행렬(transpose)입니다.

기본 사용법

`numpy.linalg.svd` 함수를 사용하여 행렬의 특이값 분해를 계산하는 기본적인 방법은 다음과 같습니다.

import numpy as np

# 행렬 A 정의
A = np.array([[1, 2], [3, 4], [5, 6]])

# 특이값 분해(SVD)
U, S, VT = np.linalg.svd(A)

print("직교 행렬 U:\n", U)
print("특이값(Singular Values) 벡터 S:\n", S)
print("V의 전치 행렬 VT:\n", VT)

위의 예제에서는 3x2 행렬 A에 대해 `svd` 함수를 사용하여 특이값 분해를 계산합니다.

다양한 예제

더 다양한 예제를 통해 `numpy.linalg.svd` 함수의 사용법을 살펴보겠습니다.

# 4x3 행렬 B 정의
B = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])

# 특이값 분해(SVD)
U_B, S_B, VT_B = np.linalg.svd(B)

print("직교 행렬 U_B:\n", U_B)
print("특이값(Singular Values) 벡터 S_B:\n", S_B)
print("V의 전치 행렬 VT_B:\n", VT_B)

위의 예제에서는 4x3 행렬 B에 대해 `svd` 함수를 사용하여 특이값 분해를 계산합니다.

주의사항

`numpy.linalg.svd` 함수는 정방 행렬(square matrix) 또는 직사각 행렬(rectangular matrix)에 대해서도 작동합니다. 그러나 행렬이 복소수(complex)인 경우에는 사용할 수 없습니다.

결론

`numpy.linalg.svd` 함수는 주어진 행렬의 특이값 분해를 계산하여 반환하며, 선형대수 연산 및 데이터 분석에서 널리 사용됩니다. 이 함수를 이해하고 사용하는 데 도움이 되길 바랍니다.

더 많은 정보는 Numpy 공식 문서를 참고하세요.

반응형