103 votes

La régression linéaire avec matplotlib / numpy

encore un débutant en Python.

Je suis en train de générer une régression linéaire sur un nuage de points, j'ai généré, mais mes données sont sous forme de liste, et tous les exemples que je peux trouver de l'aide 'polyfit' nécessite l'utilisation de 'arange'. Arange n'accepte pas les listes si. J'ai cherché haut et bas sur la façon de convertir une liste à un tableau et rien ne semble évident. Ai-je raté quelque chose?

Suite, comment puis-je utiliser ma liste d'entiers comme des entrées pour le "polyfit'

voici la polyfit exemple je suis suivants:

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() 

J

211voto

DSM Points 71975

arange génère des listes (bien, tableaux numpy); type d'aide "(arange)" pour plus de détails. Vous n'avez pas besoin d'appeler les listes existantes.

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

Je dois ajouter que j'ai tendance à utiliser poly1d ici plutôt que d'écrire "m*x+b" et l'ordre supérieur équivalents, donc ma version de votre code devrait ressembler à quelque chose comme ceci:

x = [1,2,3,4]
y = [3,5,7,10] # 10, not 9, so the fit isn't perfect

fit = polyfit(x,y,1)
fit_fn = poly1d(fit) # fit_fn is now a function which takes in x and returns an estimate for y

plot(x,y, 'yo', x, fit_fn(x), '--k')
xlim(0, 5)
ylim(0, 12)

1voto

drg Points 1

Une autre rapide et sale réponse est que vous pouvez simplement convertir votre liste à un tableau à l'aide de:

import numpy comme np np.asarray(listname)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X