You need to enable JavaScript to run this app. 如何使用Python为CSV文件中的数据拟合高斯分布
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python为CSV文件中的数据拟合高斯分布

使用lmfit实现CSV数据高斯拟合操作步骤

首先提前安装所需依赖:
pip install pandas numpy lmfit matplotlib

1. 导入依赖库

import pandas as pd
import numpy as np
from lmfit.models import GaussianModel
import matplotlib.pyplot as plt

2. 读取CSV数据

默认你的CSV文件包含两列:自变量x(如波长、时间)、因变量y(如信号强度、计数),替换对应列名和文件路径即可:

# 替换为你的CSV文件实际路径
df = pd.read_csv("your_data.csv")
# 替换为你CSV里对应的列名
x = df["x_column"].values
y = df["y_column"].values

可选预处理:如果数据包含无关区间,可以先截取包含高斯峰的部分数据再做拟合,提升拟合准确率。

3. 初始化高斯模型

lmfit内置的GaussianModel已经封装了标准高斯函数:y = A * exp(-(x-μ)²/(2σ²)),其中A为峰值幅度,μ为峰值中心,σ为分布标准差。

gmodel = GaussianModel()

4. 设置拟合初始参数

新手可以先用内置的参数自动估算方法,自动生成初始值:

params = gmodel.guess(y, x=x)

如果自动拟合效果不佳,可手动指定初始值和取值范围,示例如下:

# 手动设置峰值中心初始值为10,允许浮动范围8~12
params['center'].set(value=10, min=8, max=12)
# 手动设置标准差初始值为0.8,最小值不低于0.2
params['sigma'].set(value=0.8, min=0.2)
# 手动设置峰值幅度初始值为20
params['amplitude'].set(value=20)

5. 执行拟合计算

result = gmodel.fit(y, params, x=x)

6. 查看拟合结果

打印拟合报告

报告包含各个参数的拟合值、误差、拟合优度R²等核心指标:

print(result.fit_report())

可视化拟合效果

直观对比原始数据和拟合曲线的匹配度:

# 绘制原始散点数据
plt.scatter(x, y, label="原始数据", s=12, color="lightgray")
# 绘制拟合曲线
plt.plot(x, result.best_fit, label="高斯拟合曲线", color="crimson", linewidth=2)
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.show()

多峰拟合拓展

如果需要同时拟合多个高斯峰,可叠加多个高斯模型实例,通过prefix参数区分不同峰的参数即可:

# 定义两个高斯峰的拟合模型
gmodel = GaussianModel(prefix="peak1_") + GaussianModel(prefix="peak2_")
# 后续分别给peak1_center、peak2_center等参数设置初始值再拟合即可

内容的提问来源于stack exchange,提问作者Angela Mary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 01:21:00