繁体   English   中英

scipy的curve_fit未收到预期的结果

[英]Not expected result received with scipy's curve_fit

我试图使用scipy 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()

我得到这个结果: 在此处输入图片说明

而我想得到这样的东西:

在此处输入图片说明

有人可以给我提示我做错了什么吗? 如果这很重要,我将在Windows 10上使用Anaconda的Python 3.5。

(我假设问题确实与绘图有关)。 matplotlib绘制由直线( - )连接的红点( 'ro' )。 Matplotlib要求并以给定的顺序连接它们。

如果要绘制一条线,只需单独绘制它:

In [58]: yres = func(x, *popt)

In [59] plt.plot(yres, y, 'ro')
Out[59]: [<matplotlib.lines.Line2D at 0x7f5c0796b828>]

In [60]: plt.plot([0, 400], [0, 400], '-')
Out[60]: [<matplotlib.lines.Line2D at 0x7f5c07a9c860>]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM