问题
I tried to fit the following plot(red dot) with zipf distribution in python, F~x^(-a) I just simply chose a=0.56, and plot y = x^(-0.56) and I got the curve as follow: which is obviously wrong, don't know how I can do the curve fit
回答1:
Not sure what you are exactly looking for, but if you want to fit a model (function) to data, use 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
If you don't trust the normalization, add a second parameter b
and fit that as well.
来源:https://stackoverflow.com/questions/12037494/curve-fitting-zipf-distribution-matplotlib-python