numpy.linalg.lstsq
- linalg.lstsq(a, b, rcond='warn')[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.Изменено в версии 1.14.0: Если не установлено, выводится предупреждение FutureWarning. Предыдущее значение по умолчанию
-1будет использовать точность вычислений как параметрrcond, новое значение по умолчанию будет использовать точность вычислений умноженную наmax(M, N). Чтобы отключить предупреждение и использовать новое значение по умолчанию, используйтеrcond=None, чтобы продолжать использовать старое поведение, используйтеrcond=-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, rcond=None)[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–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.linalg.lstsq.html