numpy.linalg.lstsq
- linalg.lstsq(a, b, rcond=None)[source]
-
Возвращает решение метода наименьших квадратов для линейного матричного уравнения.
Вычисляет вектор
x, который приближенно решает уравнениеa @ x = b. Уравнение может быть недоопределённым, хорошо определённым или переопределённым (т.е., число линейно независимых строкaможет быть меньше, равно или больше числа линейно независимых столбцов). Еслиaявляется квадратной матрицей полного ранга, тоx(но с погрешностью округления) является «точным» решением уравнения. В противном случаеxминимизирует евклидову 2-норму \(||b - ax||\). Если существует несколько минимизирующих решений, возвращается решение с наименьшей 2-нормой \(||x||\).- Параметры:
-
- a(M, N) array_like
-
Матрица «коэффициентов».
- b{(M,), (M, K)} array_like
-
Значения ординаты или «зависимой переменной». Если
bдвумерна, решение метода наименьших квадратов вычисляется для каждого изKстолбцовb. - rcondfloat, необязательно
-
Отсекающий коэффициент для малых сингулярных значений
a. Для определения ранга сингулярные значения обрабатываются как нулевые, если они меньше, чемrcondумноженное на наибольшее сингулярное значениеa. По умолчанию используется машинная точность, умноженная наmax(M, N). Передача-1будет использовать машинную точность.Изменено в версии 2.0: Ранее значение по умолчанию было
-1, но было выдано предупреждение, что это изменится.
- Возвращаемые значения:
-
- x{(N,), (N, K)} ndarray
-
Решение метода наименьших квадратов. Если
bдвумерна, решения находятся вKстолбцахx. - residuals{(1,), (K,), (0,)} ndarray
-
Суммы квадратов остатков: Квадраты евклидовых 2-норм для каждого столбца в
b - a @ x. Если рангaменьше N или M <= N, это пустой массив. Еслиbодномерна, это массив формы (1,). В противном случае форма (K,). - rankint
-
Ранг матрицы
a. - s(min(M, N),) ndarray
-
Сингулярные значения
a.
- Исключения:
-
- LinAlgError
-
Если вычисление не сходится.
См. также
scipy.linalg.lstsq-
Аналогичная функция в SciPy.
Примечания
Если
bявляется матрицей, то все результаты массивов возвращаются как матрицы.Примеры
Построение прямой,
y = mx + c, через некоторые шумящие точки данных:>>> x = np.array([0, 1, 2, 3]) >>> y = np.array([-1, 0.2, 0.9, 2.1])
Проведя анализ коэффициентов, мы видим, что прямая должна иметь градиент приблизительно 1 и пересекать ось y примерно в -1.
Мы можем переписать уравнение прямой как
y = Ap, гдеA = [[x 1]]иp = [[m], [c]]. Теперь используемlstsq, чтобы решить дляp:>>> A = np.vstack([x, np.ones(len(x))]).T >>> A array([[ 0., 1.], [ 1., 1.], [ 2., 1.], [ 3., 1.]])>>> m, c = np.linalg.lstsq(A, y)[0] >>> m, c (1.0 -0.95) # may vary
Построить график данных вместе с построенной прямой:
>>> import matplotlib.pyplot as plt >>> _ = plt.plot(x, y, 'o', label='Original data', markersize=10) >>> _ = plt.plot(x, m*x + c, 'r', label='Fitted line') >>> _ = plt.legend() >>> plt.show()
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.linalg.lstsq.html