Hola usuario de nuestro sitio, descubrimos la solución a tu interrogante, deslízate y la obtendrás aquí.
linalg.lstsq(a, b, rcond='warn')
[source]-
Devuelve la solución de mínimos cuadrados a una ecuación de matriz lineal.
Calcula el vector x que resuelve aproximadamente la ecuación
a @ x = b
. La ecuación puede estar subdeterminada, bien o sobredeterminada (es decir, el número de filas linealmente independientes dea
puede ser menor, igual o mayor que su número de columnas linealmente independientes). Sia
es cuadrado y de rango completo, entoncesx
(pero para el error de redondeo) es la solución “exacta” de la ecuación. Demás,x
minimiza la norma euclidiana 2 .- Parámetros
-
a(M, N) array_like
-
Matriz de “coeficientes”.
b(M,), (M, K) array_like
-
Valores de ordenadas o “variables dependientes”. Si
b
es bidimensional, la solución de mínimos cuadrados se calcula para cada uno de losK
columnas deb
. rcondfloat, optional
-
Relación de corte para pequeños valores singulares de
a
. Para los propósitos de la determinación de rango, los valores singulares se tratan como cero si son menores quercond
veces el valor singular más grande dea
.Modificado en la versión 1.14.0: Si no se establece, se da una FutureWarning. El valor predeterminado anterior de
-1
utilizará la precisión de la máquina comorcond
parámetro, el nuevo valor predeterminado utilizará los tiempos de precisión de la máquinamax(M, N)
. Para silenciar la advertencia y usar el nuevo valor predeterminado, usercond=None
, para seguir usando el comportamiento anterior, usercond=-1
.
- Devoluciones
-
x(N,), (N, K) ndarray
-
Solución de mínimos cuadrados. Si
b
es bidimensional, las soluciones están en elK
columnas dex
. residuals(1,), (K,), (0,) ndarray
-
Sumas de residuos al cuadrado: norma 2 euclidiana al cuadrado para cada columna en
b - a @ x
. Si el rango dea
esb es unidimensional, esta es una matriz de formas (1,). De lo contrario, la forma es (K,). rankint
-
Rango de matriz
a
. s(min(M, N),) ndarray
-
Valores singulares de
a
.
- Eleva
-
- LinAlgError
-
Si el cálculo no converge.
Ver también
scipy.linalg.lstsq
-
Función similar en SciPy.
Notas
Si
b
es una matriz, entonces todos los resultados de la matriz se devuelven como matrices.Ejemplos de
Ajustar una línea
y = mx + c
, a través de algunos puntos de datos ruidosos:>>> x = np.array([0,1,2,3])>>> y = np.array([-1,0.2,0.9,2.1])
Al examinar los coeficientes, vemos que la línea debe tener un gradiente de aproximadamente 1 y cortar el eje y en, más o menos, -1.
Podemos reescribir la ecuación lineal como
y = Ap
, dóndeA = [[x 1]]
yp = [[m], [c]]
. Ahora usalstsq
para resolverp
:>>> 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
Trace los datos junto con la línea ajustada:
>>>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()
Te mostramos reseñas y calificaciones
Si crees que ha resultado de provecho este artículo, sería de mucha ayuda si lo compartes con más desarrolladores y nos ayudes a extender este contenido.