用python怎么拟合形如y=ax^b的幂函数

有关于x,y的两组数据,用python拟合曲线求a,b

scipy提供了多种拟合方法,针对楼主的需求,可以使用optimize.curve_fit函数。下面以a=5,b=3为例,在[1,5]区间内模拟了一组数据(使用随机函数扰动),然后调用optimize.curve_fit函数拟合,得到的函数系数非常接近a=5,b=3

>>> import numpy as np
>>> from scipy import optimize
>>> x = np.linspace(1, 5, 100)
>>> y = 5 * np.power(x, 3) + 0.2 * np.random.random(100)
>>> def f(x, a, b):
    return a * np.power(x, b)

>>> fita, fitb = optimize.curve_fit(f, x, y, (1,1))
>>> fita
array([5.01150334, 2.99865191])