如何拟合幂率分布的幂率
from scipy import optimize import numpy as np #定义需要拟合的函数 def fit_line(x, a, b): return a*x + b k, pk = get_dgreeDistr(BA) kmin = np.min(k) kmax = np.max(k) x = np.log10(np.array(k)) y = np.log10(np.array(pk)) # 确定拟合的参数 a, b = optimize.curve_fit(fit_line, x, y)[0] #有了拟合后的直线后,构造一条直线; x1 = np.arange(kmin, kmax,0.1) y1 = (10 ** b) * (x1 ** a) fig, ax = plt.subplots() ax.plot(k, pk, 'ro-') ax.plot(x1, y1, 'b-') ax.set_xlabel('$k$', fontsize='large') ax.set_ylabel('$p_k$', fontsize='large') ax.set_ylim(1e-4,1) ax.set_xscale("log") ax.set_yscale("log") ax.legend(loc="best") ax.set_title("fit") fig.show()
------------------------
如何“精确地”估计幂率分布的幂率: pip install powerlaw import powerlaw data = [BA.degree(i) for i in BA.nodes()] print(max(data)) fit = powerlaw.Fit(data) kmin = fit.power_law.xmin alpha = fit.power_law.alpha D = fit.power_law.D print("kmin is {}".format(kmin)) print("gamma is {}".format(alpha)) print("kmin is {}".format(D)) fig, ax = plt.subplots() ax = fit.plot_pdf(marker='o', color='b', linewidth=1) fit.power_law.plot_pdf(color='b', linestyle='-',ax=ax) fig.show()
准确,因为只考虑了多度节点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?