Python Distfit:拟合分布信息的访问、配置与保存方法
问题1:访问并存储拟合分布信息
distfit的拟合结果直接存在拟合对象的属性中,无需捕获终端输出。核心属性是results,它是一个包含所有拟合分布信息的列表,每个元素是字典,包含分布名称、参数、拟合得分等关键数据。
示例代码:
from distfit import distfit import numpy as np # 测试数据 data = np.random.normal(loc=2, scale=3, size=1000) # 初始化并执行拟合 df = distfit() df.fit_transform(data) # 直接获取所有拟合结果,存入列表 fit_info_list = df.results # 提取最优的3个分布信息 top_3_fits = fit_info_list[:3] for fit in top_3_fits: print(f"分布名称: {fit['name']}, 参数: {fit['params']}, 拟合得分: {fit['score']}")
每个字典的关键键值对说明:
name: 分布名称(如norm对应正态分布)params: 分布的拟合参数(如正态分布的均值、标准差)score: 拟合得分(得分越高拟合效果越好)loc/scale: 部分分布的位置、缩放参数(和params对应)
问题2:修改参数小数位数等预配置
修改打印精度
初始化distfit对象时,通过precision参数可以直接设置打印时的小数位数,替代默认的6位:
# 设置精度为10位小数 df = distfit(precision=10) df.fit_transform(data) # 打印汇总信息时参数会保留10位小数 df.summary()
手动格式化参数
如果需要更灵活的格式控制,可以遍历results列表,手动处理参数的小数位数:
for fit in df.results[:3]: dist_name = fit['name'] # 自定义保留12位小数 formatted_params = [round(param, 12) for param in fit['params']] print(f"{dist_name} 分布参数: {formatted_params}")
修改其他预配置
比如想指定只测试特定分布,可以在初始化时用distributions参数:
# 仅测试正态、t分布和伽马分布 df = distfit(distributions=['norm', 't', 'gamma'])
内容的提问来源于stack exchange,提问作者Samuel LF
相关产品推荐
相关产品推荐

