python由散点拟合曲线及求函数的反函数

2023-05-28  本文已影响0人  丙吉
问题,由散点图去拟合曲线,得出的曲线,再由y值算x值,原始数据如下:
image.png
解决方法,先用scipy中的curve_fit函数,得出函数的参数(得先写出函数式)
from scipy.optimize import curve_fit
# 自定义函数
def func(x, a, b):
    return a*x+b

#调用曲线拟合
popt, pcov = curve_fit(func, df['x'], df['y'])
yvals = func(df['x'], *popt)

import matplotx
with plt.style.context(matplotx.styles.pitaya_smoothie['light']):
    fig = plt.figure(figsize=(9,9))
    plot1= plt.plot(df['x'],df['y'],  '*',label='original values')
    plot3= plt.plot(df['x'], yvals, 'b', label='linear regression fit values')
    plt.legend(loc=1)
    plt.title('曲线拟合')
    plt.show()
image.png
由y 计算x时需要计算反函数
from pynverse import inversefunc

a = popt[0]
b = popt[1]

cube = (lambda x: a*x+b)
# 由y值计算x值
inv_func = inversefunc(cube, y_values=13765)
inv_func

结果为:-39.249527

上一篇下一篇

猜你喜欢

热点阅读