-1
votes

Comment adapter les données négatives avec une régression linéaire?

Je veux adapter mes données et extraire leurs pentes. J'utilise la régression linéaire. Mes données sont un ensemble de valeurs de décalage d'horloge contenant des valeurs négatives. Ceci est mon code: xxx

 Entrez la description de l'image ici Cependant, cela me donne cette erreur: xxx

alors comment résoudre cette erreur s'il vous plaît? La régression linéaire est-elle le meilleur moyen d'extraire des paramètres d'ajustement avec de telles données?


2 commentaires

Est y supposé être une liste de cordes ?


@Forcebru non, mon code fonctionne, je peux tracer la première figure.


4 Réponses :


0
votes

On dirait que votre y est une liste de chaînes. Vous avez besoin de votre Y pour être de type entier ou de flotter pour faire une régression.


1 commentaires

Le code fonctionne. Cela me donne la première fois que le problème est de calculer les paramètres de régression.



0
votes

Changer y sur une liste de nombres: y = [7, 0, 0, 0, -2, ...] code>

de cette façon fonctionne p>

from scipy import stats
import scipy
import matplotlib.pyplot as plt
plt.style.use('ggplot')
x= [1549808191, 1549808192, 1549808196, 1549808201, 1549808202, 1549808206, 1549808207, 1549808214, 1549808215, 1549808221, 1549808226, 1549808267, 1549808272, 1549808290, 1549808304, 1549808315, 1549808324, 1549808332, 1549808355, 1549808395, 1549808396]
y= [1549808191, 1549808192, 1549808196, 1549808201, 1549808202, 1549808206, 1549808207, 1549808214, 1549808215, 1549808221, 1549808226, 1549808267, 1549808272, 1549808290, 1549808304, 1549808315, 1549808324, 1549808332, 1549808355, 1549808395, 1549808396]
print(y)
plt.plot(x,y,'o-')
plt.show()
slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print(slope)


3 commentaires

Le code fonctionne. Cela me donne la première fois que le problème est de calculer les paramètres de régression.


Non, cela ne fonctionne pas, cela vous donne des erreurs. Et c'est parce que vous faites une régression sur des personnages au lieu de chiffres.


Je lance simplement votre code avec y = [1549808191, 1549808192, 1549808196, 1549808201, 1549808202, 1549808206, 1549808207, 1549808214, 1549808215, 1549808221, 1549808226, 1549808267, 1549808272, 1549808290, 1549808304, 1549808315, 1549808324, 1549808332, 1549808355, 1549808395, 1549808396] et maintenant ça marche



1
votes

problème et solution forte>


Comme dans d'autres réponses, le problème est que les valeurs Y sont des chaînes. Cela fonctionne pour vous en partie, car MATPLOTLIB FORT> modifie automatiquement vos chaînes Y en chiffres. Cependant, Scipey Strong> Bibliothèque n'a pas. Par conséquent, vous devez transformer votre liste en chiffres. Voir ci-dessous p>

from scipy import stats
import scipy
import matplotlib.pyplot as plt
plt.style.use('ggplot')
x= [1549808191, 1549808192, 1549808196, 1549808201, 1549808202, 1549808206, 1549808207, 1549808214, 1549808215, 1549808221, 1549808226, 1549808267, 1549808272, 1549808290, 1549808304, 1549808315, 1549808324, 1549808332, 1549808355, 1549808395, 1549808396]
y= ['7', '0', '0', '0', '-2', '4', '-3', '2', '0', '-1', '0', '-2', '-1', '-1','2', '-2', '1', '0', '0', '-1', '-2']
y = [float(i) for i in y]
print(x)
print(y)
plt.plot(x,y,'o-')
plt.show()
slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)
print(slope)


0 commentaires

2
votes

Le problème vient apparemment de scipy.stats.lintregress (x, y) où vous exécutez l'ajustement parce que vos valeurs y sont des chaînes. Vous pouvez les convertir en type entier à l'aide de carte et les choses fonctionnent comme prévu xxx

 Entrez la description de l'image ici


0 commentaires