scipy.optimize.curve_fit的图形错误(类似于移动平均值)

法式咖啡

我正在尝试将指数定律适用于我的数据。我的(x,y)样品是相当复杂的解释,所以对于一般的理解和再现,我会说:这两个变量是floatcontinuous0<=x<=1000<=y<=1

from scipy.optimize import curve_fit
import numpy
import matplotlib.pyplot as plt

#ydata=[...] is my list with y values, which contains 0 values
#xdata=[...] is my list with x values

transf_y=[]
for i in range(len(ydata)):
    transf_y.append(ydata[i]+0.00001) #Adding something to avoid zero values

x=numpy.array(xdata,dtype=float)
y=numpy.array(transf_y,dtype=float)

def func(x, a, c, d):
    return a * numpy.exp(-c*x)+d

popt, pcov = curve_fit(func, x, y,p0 = (1, 1e-6, 1))

print ("a = %s , c = %s, d = %s" % (popt[0], popt[1], popt[2]))

xx = numpy.linspace(300, 6000, 1000)
yy = func(xx, *popt)

plt.plot(x,y,label='Original Data')
plt.plot(xx, yy, label="Fitted Curve")

plt.legend(loc='upper left')
plt.show()

现在,我的拟合曲线看起来与拟合指数曲线完全不同。相反,它看起来像是移动平均曲线,好像在Excel上将其添加为趋势线一样。可能是什么问题呢?如有必要,我将找到一种使数据集可用于重现示例的方法。

这就是我从代码中得到的结果(我什至不知道为什么我只在图例中绘制了两个元素(至少显然是在图例中得到了三个元素)): 在此处输入图片说明

穆罕默德·李(Mohammed Li)

在此处输入图片说明许多事情:

  1. 您的绘图两次描绘了原始数据,而没有可分辨的拟合数据
  2. 您的数据似乎没有排序,我想这就是为什么您会出现zickzack行的原因
  3. 在您的示例中,您的预测图将在300到6000之间,而原始数据0 <= x <= 100

除此之外,您的代码或多或少是正确的并且可以工作。

from scipy.optimize import curve_fit
import numpy
import matplotlib.pyplot as plt

xdata=[100.0, 0.0, 90.0, 20.0, 80.0] #is my list with y values, which contains 0 values - edit, you need some raw data which you fit, I inserted some
ydata=[0.001, 1.0, 0.02, 0.56, 0.03] #is my list with x values

transf_y=[]
for i in range(len(ydata)):
    transf_y.append(ydata[i]+0.00001) #Adding something to avoid zero values

x1=numpy.array(xdata,dtype=float)
y1=numpy.array(transf_y,dtype=float)

def func(x, a, c, d):
    return a * numpy.exp(-c*x)+d

popt, pcov = curve_fit(func, x1, y1,p0 = (1, 1e-6, 1))

print ("a = %s , c = %s, d = %s" % (popt[0], popt[1], popt[2]))

#ok, sorting your data
pairs = []
for i, j in zip(x1, y1):
    pairs.append([i,j])

sortedList = sorted(pairs, key = lambda x:x[0])
sorted_x = numpy.array(sortedList)[:,0]
sorted_y = numpy.array(sortedList)[:,1]


#adjusting interval to the limits of your raw data
xx = numpy.linspace(0, 100.0, 1000)
yy = func(xx, *popt)


#and  everything looks fine
plt.plot(sorted_x,sorted_y, 'o',label='Original Data')
plt.plot(xx,yy,label='Fitted Data')

plt.legend(loc='upper left')
plt.show()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

scipy.optimize.curve_fit的图形错误(类似于移动平均值)

来自分类Dev

使用 scipy.optimize.curve_fit 绘制图形

来自分类Dev

Scipy.optimize.minimize返回错误的结果

来自分类Dev

Scipy.optimize.minimize返回错误的结果

来自分类Dev

scipy-0.18.1的`scipy.optimize.minimize`是否存在错误?

来自分类Dev

scipy.optimize.curve_fit无法拟合曲线

来自分类Dev

将Pandas DataFrame传递给Scipy.optimize.curve_fit

来自分类Dev

scipy.optimize.curve_fit有条件

来自分类Dev

使用 scipy.optimize.curve_fit 在 python 中拟合曲线

来自分类Dev

无法使用 scipy.optimize.curve_fit 拟合 ECDF

来自分类Dev

scipy.optimize.curve_fit 定积分函数与 scipy.integrate.quad

来自分类Dev

从scipy.optimize.curve_fit获取与参数估计值相关的标准错误

来自分类Dev

从python scipy.optimize.curve_fit获得完全错误的拟合

来自分类Dev

scipy.optimize.curve_fit引发运行时错误

来自分类Dev

scipy.optimize.curve_fit不受支持的操作数类型错误

来自分类Dev

scipy.optimize.curve_fit引发运行时错误

来自分类Dev

如何使用scipy.optimize中来自多个数据集的共享拟合参数的curve_fit?

来自分类Dev

发生python scipy.optimize.fmin_l_bfgs_b错误

来自分类Dev

scipy.optimize()值错误:求和的形状不匹配

来自分类Dev

多元优化-scipy.optimize输入解析错误

来自分类Dev

通过 scipy.optimize.fmin 来自 numpy.root 的错误

来自分类Dev

使用scipy curve_fit拟合错误

来自分类Dev

scipy curve_fit错误:除以零

来自分类Dev

为什么scipy.optimize.curve_fit不正确适合数据?

来自分类Dev

为何scipy.optimize.curve_fit反复评估初始猜测(可能代价很高)?

来自分类Dev

为什么我的协方差不能通过scipy.optimize.curve_fit计算?

来自分类Dev

使用lmfit.Model或scipy.optimize.curve_fit优化函数的卷积

来自分类Dev

在scipy.optimize.curve_fit函数中为各个独立点分配范围

来自分类Dev

scipy.optimize.minimize的精度

Related 相关文章

  1. 1

    scipy.optimize.curve_fit的图形错误(类似于移动平均值)

  2. 2

    使用 scipy.optimize.curve_fit 绘制图形

  3. 3

    Scipy.optimize.minimize返回错误的结果

  4. 4

    Scipy.optimize.minimize返回错误的结果

  5. 5

    scipy-0.18.1的`scipy.optimize.minimize`是否存在错误?

  6. 6

    scipy.optimize.curve_fit无法拟合曲线

  7. 7

    将Pandas DataFrame传递给Scipy.optimize.curve_fit

  8. 8

    scipy.optimize.curve_fit有条件

  9. 9

    使用 scipy.optimize.curve_fit 在 python 中拟合曲线

  10. 10

    无法使用 scipy.optimize.curve_fit 拟合 ECDF

  11. 11

    scipy.optimize.curve_fit 定积分函数与 scipy.integrate.quad

  12. 12

    从scipy.optimize.curve_fit获取与参数估计值相关的标准错误

  13. 13

    从python scipy.optimize.curve_fit获得完全错误的拟合

  14. 14

    scipy.optimize.curve_fit引发运行时错误

  15. 15

    scipy.optimize.curve_fit不受支持的操作数类型错误

  16. 16

    scipy.optimize.curve_fit引发运行时错误

  17. 17

    如何使用scipy.optimize中来自多个数据集的共享拟合参数的curve_fit?

  18. 18

    发生python scipy.optimize.fmin_l_bfgs_b错误

  19. 19

    scipy.optimize()值错误:求和的形状不匹配

  20. 20

    多元优化-scipy.optimize输入解析错误

  21. 21

    通过 scipy.optimize.fmin 来自 numpy.root 的错误

  22. 22

    使用scipy curve_fit拟合错误

  23. 23

    scipy curve_fit错误:除以零

  24. 24

    为什么scipy.optimize.curve_fit不正确适合数据?

  25. 25

    为何scipy.optimize.curve_fit反复评估初始猜测(可能代价很高)?

  26. 26

    为什么我的协方差不能通过scipy.optimize.curve_fit计算?

  27. 27

    使用lmfit.Model或scipy.optimize.curve_fit优化函数的卷积

  28. 28

    在scipy.optimize.curve_fit函数中为各个独立点分配范围

  29. 29

    scipy.optimize.minimize的精度

热门标签

归档