【python】根据自定义曲线函数进行拟合
创始人
2024-02-09 16:08:23

【参考】

  • 官网 curve_fit
  • 示例与评估:拟合curve_fit
  • 使用矫正的R^2评估非线性模型:拟合评估
  • 其他:
    • curve_fit()实现任意形式的曲线拟合-csdn
    • 拟合优度r^2-csdn

官网示例

拟合函数:
f(x)=ae−bx+cf(x)=ae^{-bx}+cf(x)=ae−bx+c

import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as npdef func(x, a, b, c):return a * np.exp(-b * x) + cxdata = np.linspace(0, 4, 50)
y = func(xdata, 2.5, 1.3, 0.5)
rng = np.random.default_rng()
y_noise = 0.2 * rng.normal(size=xdata.size)
ydata = y + y_noiseprint("--- raw data----")
print(len(xdata), len(ydata))
plt.plot(xdata, ydata, 'b-', label='data')print("--- curve1----")
popt, pcov = curve_fit(func, xdata, ydata)
print("最优化参数:", popt)
print("协方差:\n", pcov)
plt.plot(xdata, func(xdata, *popt), 'r-',label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt))print("--- curve2----")
popt, pcov = curve_fit(func, xdata, ydata, bounds=(0, [3., 1., 0.5]))
print(popt, '\n', pcov)
plt.plot(xdata, func(xdata, *popt), 'g--',label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt))
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()

在这里插入图片描述

计算拟合结果的指标

  • 总平方和: SST=∑(yi−yˉ)2SST=\sum{(y_i-\bar{y})^2}SST=∑(yi​−yˉ​)2

    总平方和(SST) = 回归平方和(SSR)十残差平方和(SSE)

  • 回归平方和: SSR=∑(y^i−yˉ)2SSR=\sum{(\hat{y}_i-\bar{y})^2}SSR=∑(y^​i​−yˉ​)2

  • 残差平方和: SSE=∑(yi−y^i)2SSE=\sum{(y_i-\hat{y}_i)^2}SSE=∑(yi​−y^​i​)2

  • 判定系数R-square
    R2=SSRSST=SST−SSESST=1−SSESSTR^2=\frac{SSR}{SST}=\frac{SST-SSE}{SST}=1-\frac{SSE}{SST}R2=SSTSSR​=SSTSST−SSE​=1−SSTSSE​

  • 矫正判定系数Adjusted R-square: Degree-of-freedom adjusted coefficient of determination

    Radjusted2=1−(1−R2)(n−1)n−p−1R^2_{adjusted} = 1 - \frac{(1-R^2)(n-1)}{n-p-1}Radjusted2​=1−n−p−1(1−R2)(n−1)​

    其中,n为样本个数,p为特征个数

    R-square不适合用于判断非线性拟合的效果

  • MSEMSEMSE (均方差、方差): MSE=SSE/n=1n∑i=1n(yi−y^i)2MSE=SSE/n=\frac{1}{n}\sum_{i=1}^{n}{(y_i-\hat{y}_i)^2}MSE=SSE/n=n1​i=1∑n​(yi​−y^​i​)2

  • RMSERMSERMSE(均方根、标准差):
    RMSE=MSE=SSE/n=1n∑i=1n(yi−y^i)2RMSE=\sqrt{MSE}=\sqrt{SSE/n}=\sqrt{\frac{1}{n}\sum_{i=1}^{n}{(y_i-\hat{y}_i)^2}}RMSE=MSE​=SSE/n​=n1​i=1∑n​(yi​−y^​i​)2


未完待续。。。

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...