You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何定义curve_fit()中的拟合优度?如何评估Voigt拟合效果?

curve_fit拟合优度定义及Voigt拟合结果评估

拟合优度(R²)的定义

拟合优度(常用R²表示)是衡量模型对数据拟合效果的核心指标,计算公式为:

R² = 1 - (SS_res / SS_tot)

其中:

  • SS_res:残差平方和,即所有数据点实际值与拟合值的差的平方总和,SS_res = Σ(y_i - ŷ_i)²
  • SS_tot:总平方和,即所有数据点实际值与整体均值的差的平方总和,SS_tot = Σ(y_i - ȳ)²

R²取值范围在0到1之间,越接近1说明拟合模型对数据的解释能力越强,拟合效果越好。

评估Voigt拟合结果的具体实现

结合你给出的拟合代码,按以下步骤即可评估匹配程度:

1. 计算拟合值

用curve_fit返回的最优参数popt,代入Voigt函数得到每个x对应的拟合y值:

import numpy as np

# 基于最优参数计算拟合值
y_fit = voigt(xval, *popt)

2. 计算核心评估指标

# 计算残差平方和SS_res
ss_res = np.sum((yval - y_fit) ** 2)
# 计算总平方和SS_tot
y_mean = np.mean(yval)
ss_tot = np.sum((yval - y_mean) ** 2)

# 计算拟合优度R²
r_squared = 1 - (ss_res / ss_tot)
print(f"拟合优度R²: {r_squared:.4f}")

# 可选:计算均方误差MSE(衡量平均平方误差)
mse = ss_res / len(yval)
print(f"均方误差MSE: {mse:.6f}")

3. 可视化辅助评估

通过绘图可以更直观判断拟合效果:

  • 残差分布图:如果残差随机分布在0线附近,无明显趋势,说明拟合合理
import matplotlib.pyplot as plt

residuals = yval - y_fit
plt.scatter(xval, residuals, alpha=0.6)
plt.axhline(y=0, color='red', linestyle='--')
plt.xlabel('x')
plt.ylabel('残差')
plt.title('残差分布')
plt.show()
  • 拟合曲线与原始数据对比图:直接观察拟合曲线和原始数据的贴合程度
plt.scatter(xval, yval, label='原始数据', alpha=0.6)
plt.plot(xval, y_fit, 'r-', label='Voigt拟合曲线')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.title('Voigt拟合 vs 原始数据')
plt.show()

注意事项

  • 确保xval和yval是numpy数组,避免循环计算的低效和错误
  • 如果数据存在异常值,R²可能被干扰,此时残差图能帮你快速识别异常点

内容的提问来源于stack exchange,提问作者Kanan Yagublu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:46:03