gpt4 book ai didi

python-2.7 - scipy curve_fit 返回初始参数估计

转载 作者:行者123 更新时间:2023-12-04 04:47:38 26 4
gpt4 key购买 nike

我正在尝试使用 scipy curve_fit 将高斯函数拟合到我的数据中,网上有很多有用的例子,我试图让几个工作,但无济于事。我使用虚构的数据编写了一个简单的脚本来诊断问题。简而言之,curve_fit 没有做任何拟合,函数只是返回初始参数值,无论它们与实数有多接近。这是简单脚本的代码:

# -*- coding: utf-8 -*-
import numpy
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
from scipy import optimize

##Fit
def Fit( datax, datay ):
# define your function:
def f(x, *p):
p = m, b
return m*numpy.asarray(x) + b
m = 0.4
b = 2.4
p_init = [m, b]
Initial_model = f(datax, [m, b])
plt.plot(datax, Initial_model, label='Initial Model')
plt.title("Initial Model")
# plt.title('Initial Model')
# plt.show()
# fit! (given that data is an array with the data to fit)
print optimize.curve_fit(f, datax, datay, p_init)
coeff, var_matrix = optimize.curve_fit(f, datax, datay, p_init)
global fit
fit = f(datax, *coeff)
plt.plot(datax, fit, 'r-')
plt.show()
print 'Fitted slope 1 = ', coeff[0]
print 'Fitted intercept 1 = ', coeff[1]
return fit

##Plot
def Plot( datax, datay, fit ):
fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot(datax, datay, 'b*')
l = ax.plot( datax, fit, 'r-', linewidth=2)
ax.set_xlabel('Rate')
ax.set_ylabel('Return')
ax.set_title("Test")
ax.autoscale(enable=True, axis='both', tight=None)
ax.grid(True)
plt.show()

##data
datax = numpy.array([7.02, 20.06, 13.78, 16.92, 10.17], dtype=numpy.float64)
datay = numpy.array([5.14, 10.66, 8.44, 9.64, 6.79], dtype=numpy.float64)

##analyze
Fit( datax, datay )
Plot( datax, datay, fit )

Out:
(array([ 0.4, 2.4]), inf)
Fitted slope 1 = 0.4
Fitted intercept 1 = 2.4

我尝试过的事情:
- 直接使用leastsq:同样的问题
-重新安装 scipy:没有变化

我在 Windows 7 上使用 Anaconda。

可能是什么问题?

最佳答案

您对 f() 的定义是奇特的,不会做你想做的事。您正在分配 mbp从而覆盖传入的任何内容。这就是参数似乎永远不会改变的原因,因为它们不会改变!

无需定义 f()以一种特殊的方式,只需按照正常列出参数的方式对其进行定义即可。对于您拟合一条线的简单情况,我们可以使用

def f(x, m, b) :
return m*x + b

唯一需要的其他改变是
Initial_model = f(datax, *p_init)

并且您的代码将运行。

关于python-2.7 - scipy curve_fit 返回初始参数估计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17953735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com