NumPy의 최소 제곱

Muhammad Maisam Abbas 2022년1월22일
NumPy의 최소 제곱

이 기사에서는 Python에서 최소 제곱 법으로 AX = B를 계산하는 방법을 소개합니다.

Python에서numpy.linalg.lstsq()함수를 사용한 최소 제곱 NumPy

방정식AX = B는 선형 행렬 방정식으로 알려져 있습니다. numpy.linalg.lstsq()함수를 사용하여 Python에서 최소 제곱 법으로 선형 행렬 방정식AX = B를 풀 수 있습니다. 사실 꽤 간단합니다. 이 함수는 행렬을 가져 와서 다른 행렬의 형태로 선형 행렬 방정식에 대한 최소 제곱 솔루션을 반환합니다. 다음 코드 예제를 참조하십시오.

import numpy as np

A = [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 0, 0]]
B = [1, 1, 1, 1, 1]

X = np.linalg.lstsq(A, B, rcond=-1)
print(X[0])

출력:

[5.00000000e-01 5.00000000e-01 1.09109979e-16 1.64621130e-16]

위 코드에서 우리는 Python의np.linalg.lstsq()함수를 사용하여 선형 행렬 방정식AX = B에 대한 해를 계산했습니다. 이 방법은 행렬에 가중치를 추가하기 시작할 때 약간 까다로워집니다. 이러한 종류의 문제에 대한 해결책을 찾는 데 사용할 수있는 두 가지 주요 방법이 있습니다.

첫 번째 해결책은np.newaxis지정자와 함께 배열 인덱싱을 사용하여 가중치에 새 차원을 추가하는 것입니다. 아래 코딩 예제에 설명되어 있습니다.

import numpy as np

A = np.array([[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 0, 0]])
B = np.array([1, 1, 1, 1, 1])

W = np.array([1, 2, 3, 4, 5])

Aw = A * np.sqrt(W[:, np.newaxis])
Bw = B * np.sqrt(W)

X = np.linalg.lstsq(Aw, Bw, rcond=-1)
print(X[0])

출력:

[ 5.00000000e-01  5.00000000e-01 -4.40221936e-17  1.14889576e-17]

위의 코드에서 우리는 파이썬에서np.newaxisnp.linalg.lstsq()함수를 사용하여 가중치W와 함께 선형 행렬 방정식AX = B에 대한 해를 계산했습니다. 이 방법은 잘 작동하지만 이해하고 읽기 쉽지는 않습니다.

두 번째 솔루션은 좀 더 읽기 쉽고 이해하기 쉽습니다. 가중치를 대각 행렬로 변환 한 다음 사용하는 것이 포함됩니다. 아래 코딩 예제에서 설명합니다.

import numpy as np

A = [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 0, 0]]
B = [1, 1, 1, 1, 1]
W = [1, 2, 3, 4, 5]

W = np.sqrt(np.diag(W))

Aw = np.dot(W, A)
Bw = np.dot(B, W)

X = np.linalg.lstsq(Aw, Bw, rcond=-1)
print(X[0])

출력:

[ 5.00000000e-01  5.00000000e-01 -4.40221936e-17  1.14889576e-17]

위의 코드에서 가중치를 대각선 행렬로 변환 한 다음np.linalg.lstsq()함수를 사용하여 가중치W와 함께 선형 행렬 방정식AX = B에 대한 해를 계산했습니다.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn