python 分段拟合 判别_Python中的分段指数拟合

博主在尝试使用Python的Scipy库进行分段线性拟合时遇到问题,代码始终将参数`x0`固定为1。无论数据集如何变化,结果不变。博主分享了代码并附上了生成的图形,期望找到解决问题的方法。可能的错误在于曲线拟合部分或者数据处理的逻辑。解决方案可能涉及检查输入数据、参数初始化或调整拟合函数。
摘要由CSDN通过智能技术生成

我正在尝试进行分段拟合,如图1所示:

11bf0f9f3264dc200b0ff4cacb3dd743.png

代码如下:import numpy as np

from matplotlib import pyplot as plt

from scipy import optimize

def piecewise_linear(x, x0, y0, k1, k2):

return np.piecewise(x, [x < x0], [lambda x: k1*np.power(x,k2), lambda x: y0])

x=np.arange(0.0,100.0,1.0)

y=piecewise_linear( x, 45.0, 2025.0, 1.0, 2.0)

popt , pcov = optimize.curve_fit(piecewise_linear, x, y)

tau = np.linspace(x[0], x[-1], 200)

perr = np.sqrt(np.diag(pcov))

print popt

print perr

print pcov

plt.plot(x, y, 'b+')

plt.plot(tau, piecewise_linear(tau, *popt),'r')

plt.loglog()

plt.show()

plt.close()

但这给了我如图2所示:

110f5fdcac677e5cf17133ec3b7cb7e5.png

不管我如何更改数据集,参数x0都固定为1。在

我不知道我的代码出了什么问题,我该如何更正它?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值