我试图在python中使用zipf分布拟合下面的图(红点),F~x ^( - a) 我只是简单地选择了a = 0.56,并绘制了y = x ^( - 0.56),得到的曲线如下: 这显然是错误的,不知道我怎么能做曲线拟合
答案 0 :(得分:2)
不确定您究竟在寻找什么,但如果您想让模型(函数)适合数据,请使用scipy.optimize.curve_fit
:
from scipy.optimize import curve_fit
from scipy.special import zetac
def f(x, a):
return (x**-a)/zetac(a)
result = curve_fit(f, x, y, p0=[0.56])
p = result[0]
print p
如果您不信任规范化,请添加第二个参数b
并使其适合。