如何解决Scipy中LeastSq的初始参数对最终参数输出有显着影响
我是 Scipy 的新手,我想用 Scipy leastsq 用最小二乘法做一个拟合任务。但我发现初始参数对最终值有显着影响。并且拟合性能不稳定。初始数据可能呈指数分布。即使我不应该选择线性拟合模型,但我不知道为什么它会随着初始参数的变化而变化。我在网上搜索,没有找到有关情况。 这是我的代码。改变初始值(self.temp_para),输出会有很大的不同。
class experience_func():
def __init__(self):
self.x = [i+1 for i in range(8)]
self.y = [15.3,20.5,27.4,36.6,49.1,65.6,87.87,117.6]
#self.y = np.log(self.y)
self.temp_para = [1,0.65]
def func(self,param,x):
a,b = param
result = [a*np.exp(b*x[i]) for i in range(len(x))]
return result
def error(self,func,x,y):
return [self.y[i] - self.func(self.temp_para,x)[i] for i in range(8)]
def visualize(self):
predict = np.linspace(1,8,1000)
plt.plot(predict,self.func(self.param[0],predict),color = 'orange',label = 'predict')
plt.plot(self.x,self.y,color = 'red',label = 'fact',linestyle = 'dashed')
plt.legend()
plt.title('straight line')
plt.show()
def optimal(self):
self.param = leastsq(self.error,self.temp_para,args = (self.x,self.y))
return self.visualize()
感谢您的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。