numpy.linalg.lstsqNumPy: эта функция вычисляет решение по методу наименьших квадратов, используя модуль линейной алгебры библиотеки NumPy.
import numpy as np
A = ... # Coefficient matrix
b = ... # Dependent variable vector
x, residuals, rank, singular_values = np.linalg.lstsq(A, b, rcond=None)
scipy.linalg.lstsqв SciPy: подобно lstsqв NumPy, эта функция в библиотеке SciPy предоставляет удобный способ решения задач наименьших квадратов.
import numpy as np
from scipy.linalg import lstsq
A = ... # Coefficient matrix
b = ... # Dependent variable vector
x, residuals, rank, singular_values = lstsq(A, b)
sklearn.linear_model.LinearReprofitScikit-learn: Хотя этот модуль scikit-learn в основном используется для линейной регрессии, этот модуль scikit-learn также можно использовать для решения задач наименьших квадратов.
from sklearn.linear_model import LinearRegression
A = ... # Coefficient matrix
b = ... # Dependent variable vector
model = LinearRegression()
model.fit(A, b)
x = model.coef_
- Разложение по сингулярным значениям (SVD). SVD можно использовать для решения задач наименьших квадратов путем разложения матрицы коэффициентов на три отдельные матрицы.
import numpy as np
A = ... # Coefficient matrix
b = ... # Dependent variable vector
U, sigma, Vt = np.linalg.svd(A, full_matrices=False)
x = Vt.T @ np.linalg.inv(np.diag(sigma)) @ U.T @ b
- Градиентный спуск. Для поиска решения методом наименьших квадратов можно использовать итеративный алгоритм оптимизации, например градиентный спуск, путем минимизации суммы квадратов остатков.
import numpy as np
A = ... # Coefficient matrix
b = ... # Dependent variable vector
learning_rate = ...
x = np.zeros(A.shape[1]) # Initial guess for the solution
for _ in range(num_iterations):
residuals = A @ x - b
gradient = 2 * A.T @ residuals
x -= learning_rate * gradient