Ich habe versucht, multivariate logarithmische Regression auf meine Daten mit scipy curve_fit zu tun und als Ergebnis erwarten, eine Linie zu bekommen, aber eine Kurve zu bekommen. Hier ist der Code, den ich verwendet:Nicht erwartetes Ergebnis erhalten mit scipy's curve_fit
Quercetin=[23,195,6,262,272,158,79,65,136,198]
Naringenin=[11,4,8,6,6,7,6,9,7,9]
Rutin=[178,165,93,239,202,3325,4427,7607,3499,1762]
TEAC=[23,189,37,265,290,267,362,388,364,321]
import matplotlib.pyplot as plt
import scipy
from scipy.optimize import curve_fit
import numpy as np
def func(x, a, b, c, d,e):
m=np.log(a*x[0]+b*x[1]+c*x[2])
return d*(m)+e
x=scipy.array([Quercetin, Naringenin,Rutin])
y=scipy.array(TEAC)
popt, pcov = curve_fit(func, x ,y)
print (popt)
plt.plot(func(x,*popt),y,'ro-')
plt.show()
während ich so etwas zu bekommen:
Kann mir jemand bitte geben ein Hinweis darauf, was ich falsch mache? Wenn das wichtig ist, verwende ich Python 3.5 von Anaconda auf Windows 10.
Danke. Ich habe wirklich übersehen, dass die Art, wie ich geplottet habe, Punkte sind, die durch Linien verbunden sind! Aber hier, wie ich sehe, wird eine Linie geplottet, die einfach y = x ist, während ich die von curve_fit angepasste Linie plotten möchte. –