sklearn regresion paso logistica lineal ejemplos ejemplo algoritmo python numpy matplotlib linear-regression curve-fitting

python - regresion - Regresión lineal con matplotlib/numpy



regresion lineal sklearn (5)

Intento generar una regresión lineal en un diagrama de dispersión que he generado, sin embargo, mis datos están en formato de lista, y todos los ejemplos que puedo encontrar de usar polyfit requieren el uso de un polyfit . arange no acepta listas, sin embargo. He buscado alto y bajo acerca de cómo convertir una lista en una matriz y nada parece claro. ¿Me estoy perdiendo de algo?

A continuación, ¿qué mejor puedo usar mi lista de enteros como entradas para el polyfit ?

aquí está el ejemplo polyfit que estoy siguiendo:

from pylab import * x = arange(data) y = arange(data) m,b = polyfit(x, y, 1) plot(x, y, ''yo'', x, m*x+b, ''--k'') show()


Este código:

from scipy.stats import linregress linregress(x,y) #x and y are arrays or lists.

da una lista con lo siguiente:

pendiente: flotador
pendiente de la línea de regresión
interceptar: flotar
intersección de la línea de regresión
valor r: flotar
coeficiente de correlación
valor p: flotar
valor p de dos lados para una prueba de hipótesis cuya hipótesis nula es que la pendiente es cero
stderr: flotar
Error estándar de la estimación

Source


Otra respuesta rápida y sucia es que puedes convertir tu lista a una matriz usando:

import numpy as np arr = np.asarray(listname)


arange genera listas (bien, matrices numpy); escriba help(np.arange) para los detalles. No necesita llamarlo a listas existentes.

>>> x = [1,2,3,4] >>> y = [3,5,7,9] >>> >>> m,b = np.polyfit(x, y, 1) >>> m 2.0000000000000009 >>> b 0.99999999999999833

Debo añadir que tiendo a usar poly1d aquí en lugar de escribir "m * x + b" y los equivalentes de orden superior, por lo que mi versión de tu código se vería así:

import numpy as np import matplotlib.pyplot as plt x = [1,2,3,4] y = [3,5,7,10] # 10, not 9, so the fit isn''t perfect fit = np.polyfit(x,y,1) fit_fn = np.poly1d(fit) # fit_fn is now a function which takes in x and returns an estimate for y plt.plot(x,y, ''yo'', x, fit_fn(x), ''--k'') plt.xlim(0, 5) plt.ylim(0, 12)


from pylab import * import numpy as np x1 = arange(data) #for example this is a list y1 = arange(data) #for example this is a list x=np.array(x) #this will convert a list in to an array y=np.array(y) m,b = polyfit(x, y, 1) plot(x, y, ''yo'', x, m*x+b, ''--k'') show()


import numpy as np import matplotlib.pyplot as plt from scipy import stats x = np.array([1.5,2,2.5,3,3.5,4,4.5,5,5.5,6]) y = np.array([10.35,12.3,13,14.0,16,17,18.2,20,20.7,22.5]) gradient, intercept, r_value, p_value, std_err = stats.linregress(x,y) mn=np.min(x) mx=np.max(x) x1=np.linspace(mn,mx,500) y1=gradient*x1+intercept plt.plot(x,y,''ob'') plt.plot(x1,y1,''-r'') plt.show()

Utilizar esta ..