当前位置: 首页 > article >正文

拟合算法 (matlab工具箱)

拟合算法:

1线性最小二乘法拟合

使用matlab进行求解

拟合优度:R^2

拟合优度的matlab代码:

2,Matlab工具箱的教学

一些函数:


拟合算法:

插值算法中,得到的多项式f(x)要经过所有样本点。但是如果样本点太多,那么这个多项式次数过高,会造成龙格现象

尽管我们可以选择分段的方法避免这种现象,但是更多时候我们更倾向于得到-个确定的曲线,尽管这条曲线不能经过每一个样本点,但只要保证误差足够小即可,这就是拟合的思想。(拟合的结果是得到一个确定的曲线)

1线性最小二乘法拟合

原理:假设数据点(Xi,Yi),i=1,2.....,n.我们希望找到一条直线y=ax+b来最佳拟合这些数据。最佳拟合的标准是使各数据点到直线的纵向距离的平方和最小,即最小化目标函数

通过对a和b求偏导数,并令偏导数为 0,可得到关于a和b的方程组,解方程组即可求得a和b的值。(让s最小)

这个S在机器学习中也叫损失函数,在回归中被叫做残差平方和

a就是,b就是

使用matlab进行求解

clear;clc

load data1

plot(x,y,'o')

% 给x和y轴加上标签

xlabel('x的值')

ylabel('y的值')

n = size(x,1);%有多少个x就有多少个样本

k = (n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.*x)-sum(x)*sum(x))

%x.*y后求和,表示∑xi*yi,后面的依次是∑yi和∑xi

b = (sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x))

hold on % 继续在之前的图形上来画图形

grid on % 显示网格线

f=@(x) k*x+b;%匿名函数

fplot(f,[2.5,7]);

legend('样本数据','拟合函数','location','SouthEast')

% fplot函数可用于画出匿名一元函数的图形。

% fplot(f,xinterval) 将匿名函数f在指定区间xinterval绘图。xinterval = [xmin xmax] 表示定义域的范围

拟合优度:R^2

下面的表示实际值,表示平均值,表示拟合值

总体平方和SST:

误差平方和SSE:

回归平方和SSR:

这里的SST==SSE+SSR

拟合优度R^2:

这里的R^2越接近1越好,同理,可以简单的说SSE占比SST越小越好

这里的R^&2只能拟合线性函数(这里的线性指的是a和b是线性,而不是x),否则建议给SSE

拟合优度的matlab代码:

y_hat = k*x+b; % y的拟合值

SSR = sum((y_hat-mean(y)).^2) % 回归平方和

SSE = sum((y_hat-y).^2) % 误差平方和

SST = sum((y-mean(y)).^2) % 总体平方和

SST-SSE-SSR % 5.6843e-14 = 5.6843*10^-14 matlab浮点数计算的一个误差

R_2 = SSR / SST

2,Matlab工具箱的教学

左上角选择数据

下面是自动拟合的

它告诉我们使用的是

一些其他数据

可以我们自己选择拟合的函数

如果选择的是指数,就会是这样

也可以二次函数拟合

下面是例题

下表给出了近2个世纪的美国人口统计数据(单位:百万人),请使用最下面给定的拟合函数预测后30年的美国人口。

这里的xm和r是两个拟合的参数,t表示年份,x(t)表示第t年的人口

在cftool中导入数据后,自定义函数

发现图像没收敛

这里的问题是拟合起点有问题,需要我们更改拟合的起点

更改后就可以发现拟合就比较好了

之后直接导出使用就好了

一些函数:

% (1)randi : 产生均匀分布的随机整数(i = int)

%产生一个1至10之间的随机整数矩阵,大小为2x5;

s1 = randi(10,2,5)

%产生一个-5至5之间的随机整数矩阵,大小为1x10;

s2 = randi([-5,5],1,10)

% (2) rand: 产生0至1之间均匀分布的随机数

%产生一个0至1之间的随机矩阵,大小为1x5;

s3 = rand(1,5)

%产生一个a至b之间的随机矩阵,大小为1x5; % a + (b-a) * rand(1,5); 如:a,b = 2,5

s4= 2 + (5-2) * rand(1,5)

% (3)normrnd:产生正态分布的随机数

%产生一个均值为0,标准差(方差开根号)为2的正态分布的随机矩阵,大小为3x4;

s5 = normrnd(0,2,3,4)

% (4)roundn—任意位置四舍五入

% 0个位 1十位 2百位 -1小数点后一位

a = 3.1415

roundn(a,-2) % ans = 3.1400

roundn(a,2) % ans = 0

a =31415

roundn(a,2) % ans = 31400

roundn(5.5,0) %6

roundn(5.5,1) %10


http://www.kler.cn/a/510113.html

相关文章:

  • 通信协议之多摩川编码器协议
  • 简历_使用 Redis 解决集群模式下的 Session 共享问题,使用拦截器实现用户的登录,校验和权限刷新以及对单位时间内请求频繁的用户IP地址进行限流。
  • [LeetCode] 链表完整版 — 虚拟头结点 | 基本操作 | 双指针法 | 递归
  • nss刷题3
  • docker 基础语法学习,K8s基础语法学习,零基础学习
  • 适配器模式详解:解决接口不兼容问题的灵活设计模式
  • 使用Websocket进行前后端实时通信
  • 彻底理解JVM类加载机制
  • 企业可以通过以下方式利用全星QMS软件提高质量管理的效率和准确性
  • PCL 计算点云的最大距离【2025最新版】
  • 蓝桥杯训练—芯片测试
  • 安装httpd
  • CentOS 7.9下安装Docker
  • WEB渗透技术研究与安全防御
  • 乘联会:1月汽车零售预计175万辆 环比暴跌33.6%
  • 构建安全防线:基于视频AI的煤矿管理系统架构创新成果展示
  • MobileNet:轻量级卷积神经网络引领移动设备图像识别新时代
  • 广东打造低空经济发展平台,CES Asia 2025助力科技腾飞
  • 国内微电子(集成电路)领域重点高校的特色与优势
  • 【scrapy】信号量—扩展随笔
  • 利用@WebMvcTest测试Spring MVC应用
  • MySQL、HBase、ES的特点和区别
  • 初学stm32 --- flash模仿eeprom
  • AI-Talk开发板之替换唤醒词
  • K8S中Pod控制器之Deployment(Deploy)控制器
  • Prompt-人工智能领域的核心技术与创新理念