微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Scipy中LeastSq的初始参数对最终参数输出有显着影响

如何解决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 举报,一经查实,本站将立刻删除。