Python 优化功能参数

Python 优化功能参数,python,numpy,optimization,error-handling,parameters,Python,Numpy,Optimization,Error Handling,Parameters,我不熟悉编码,目前正在尝试将一个函数与我的数据相匹配,并在我的代码中找到我称为“a”和“c”的优化参数,我将在下面展示。当我运行我所拥有的代码时,我得到了一个错误——“内置函数”或“方法”对象没有“优化”属性,我看不出如何克服这个问题(可能是因为我缺乏编码知识tbh),我想知道是否有人能帮我改进代码,以便我得到最适合绘制数据的“a”和“c”值 以下是我目前的代码: import numpy import scipy.optimize as optimization import matplot

我不熟悉编码,目前正在尝试将一个函数与我的数据相匹配,并在我的代码中找到我称为“a”和“c”的优化参数,我将在下面展示。当我运行我所拥有的代码时,我得到了一个错误——“内置函数”或“方法”对象没有“优化”属性,我看不出如何克服这个问题(可能是因为我缺乏编码知识tbh),我想知道是否有人能帮我改进代码,以便我得到最适合绘制数据的“a”和“c”值

以下是我目前的代码:

import numpy
import scipy.optimize as optimization 
import matplotlib.pyplot as plt 

xdata=numpy.array([4.78,5.48,5.88,6.17,6.39,6.57,6.73,6.86,6.98,7.09,7.16,7.27,7.35,7.42,7.49,7.56,7.62,7.67,7.73,7.78,7.83,7.87,7.92,7.96,8.00,8.04,8.08,8.11,8.15,8.18])#x data
ydata=numpy.array([1.666,1.669,1.669,1.672,1.680,1.682,1.687,1.692,1.696,1.704,1.709,1.714,1.716,1.727,1.733,1.740,1.749,1.752,1.761,1.771,1.783,1.793,1.797,1.812,1.818,1.828,1.833,1.836,1.844,1.852])#y data 

x0 = numpy.array([0.0, 0.0]) #not sure how to treat this line??

sigma = numpy.array([1.0,1.0,1.0,1.0,1.0,1.0]) # errors (being omitted at the moment)

def func(x, a, c):
    return a+c*x   #definition of function 

plt.plot(xdata,ydata,label='data')
plt.show()

print.optimization.curve_fit(func, xdata, ydata, x0, sigma)
你应该写

print(optimization.curve_fit(func, xdata, ydata, x0, sigma))
而不是

print.optimization.curve_fit(func, xdata, ydata, x0, sigma)
你应该写

print(optimization.curve_fit(func, xdata, ydata, x0, sigma))
而不是

print.optimization.curve_fit(func, xdata, ydata, x0, sigma)

最后一行应该是
print(optimization.curve\u fit…
),而不是
print.optimization.curve\u fit…
。您可能还希望在显示绘图之前打印出来,例如,交换最后两行代码
plt.show()
是一条阻塞指令,至少在终端中是这样。谢谢!这两条评论都删除了我得到的错误,这很好!是否有一种方法,我现在可以用优化的参数绘制函数,以便它覆盖我的数据图?抱歉,如果这似乎是一个简单的问题,只是想对如何编写所有这些代码有一个基本的了解另外,当我现在运行代码时,我得到这行代码作为输出:(array([1.29772981,0.06167754]),array([[2.4397564e-03,-3.31181003e-04],-3.31181003e-04,4.55502937e-05]))我本来希望从中得到“a”和“c”的值,而不是一系列数组值,但我想我遗漏了什么?最后一行应该是
print(optimization.curve\u fit…
,而不是
print.optimization.curve\u fit…
。您可能还想在显示绘图之前打印出来,例如,交换最后两行代码
plt.show()
是一条阻塞指令,至少在终端中是这样。谢谢!这两条评论都删除了我得到的错误,这很好!是否有一种方法,我现在可以用优化的参数绘制函数,以便它覆盖我的数据图?抱歉,如果这似乎是一个简单的问题,只是想对如何编写所有这些代码有一个基本的了解另外,当我现在运行代码时,我得到这行代码作为输出:(array([1.29772981,0.06167754]),array([[2.4397564e-03,-3.31181003e-04],-3.31181003e-04,4.55502937e-05]))我希望从中得到更多的“a”和“c”值,而不是一系列数组值,但我想我遗漏了什么?谢谢!这已经消除了错误,我得到这是好的!是否有一种方法,我现在可以用优化的参数绘制函数,以便它覆盖我的数据图?抱歉,如果这似乎是一个简单的问题,只是想对如何编写这些代码有一个基本的了解抱歉,我不能帮你,因为我以前从未使用过scipy和matplotlib谢谢!这已经消除了错误,我得到这是好的!是否有一种方法,我现在可以用优化的参数绘制函数,以便它覆盖我的数据图?抱歉,如果这似乎是一个简单的问题,只是想对如何编写所有这些代码有一个基本的了解抱歉,我无法帮助您,因为我以前从未使用过scipy和matplotlib