Python拟合函数n=(1-a/b)求解参数a及拟合优度计算
使用Python拟合函数 n=(1-a/b) 并计算拟合优度
本示例演示如何使用Python对函数 n = (1 - a / b) 进行拟合,其中已知 n 和 b 的值,目标是找到最佳拟合参数 a 并计算拟合优度。
import numpy as np
from scipy.optimize import curve_fit
# 定义拟合函数
def fit_func(b, a):
return 1 - a / b
# 提供n和b的值
n_values = np.array([0.5, 0.7, 0.9, 0.3]) # n的值
b_values = np.array([2, 4, 6, 8]) # b的值
# 使用curve_fit进行拟合
params, _ = curve_fit(fit_func, b_values, n_values)
# 提取拟合的参数a
a_fit = params[0]
# 计算拟合优度
n_values_fit = fit_func(b_values, a_fit)
ss_res = np.sum((n_values - n_values_fit) ** 2) # 残差平方和
ss_tot = np.sum((n_values - np.mean(n_values)) ** 2) # 总平方和
r_squared = 1 - (ss_res / ss_tot) # 拟合优度
print('拟合参数a:', a_fit)
print('拟合优度 (R²):', r_squared)
代码说明:
- 首先,我们定义了拟合函数
fit_func(b, a),它接受参数b和a并返回1 - a / b。 - 然后,我们创建了 NumPy 数组来存储已知的
n和b值。 - 使用
scipy.optimize模块中的curve_fit函数进行拟合。 curve_fit函数返回两个值:params和_。params是一个包含拟合参数的数组,本例中为[a]。- 我们从
params数组中提取拟合参数a。 - 然后,我们使用拟合参数和
b_values计算拟合后的n值 (n_values_fit)。 - 最后,我们计算拟合优度 R²。
注意:
- 这里使用的是最小二乘法进行拟合。
- 拟合结果可能受到初始参数的选择和数据的噪声影响。
原文地址: https://www.cveoy.top/t/topic/fOpi 著作权归作者所有。请勿转载和采集!