拟合算法 (matlab工具箱)

news/2025/1/21 19:42:46/

拟合算法:

1线性最小二乘法拟合

matlab%E8%BF%9B%E8%A1%8C%E6%B1%82%E8%A7%A3-toc" name="tableOfContents" style="margin-left:40px">使用matlab进行求解

拟合优度:R^2

matlab%E4%BB%A3%E7%A0%81%EF%BC%9A-toc" name="tableOfContents" style="margin-left:80px">拟合优度的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%E8%BF%9B%E8%A1%8C%E6%B1%82%E8%A7%A3" name="%E4%BD%BF%E7%94%A8matlab%E8%BF%9B%E8%A1%8C%E6%B1%82%E8%A7%A3" style="margin-left:0.0001pt; margin-right:0px; text-align:justify">使用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%E4%BB%A3%E7%A0%81%EF%BC%9A" name="%E6%8B%9F%E5%90%88%E4%BC%98%E5%BA%A6%E7%9A%84matlab%E4%BB%A3%E7%A0%81%EF%BC%9A" style="margin-left:0.0001pt; margin-right:0px; text-align:justify">拟合优度的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.ppmy.cn/news/1565021.html

相关文章

Windows上同时配置GitHub和Gitee服务

Windows上同时配置GitHub和Gitee服务 摘要摘要 初始化添加用户名和邮箱 创建密钥ssh keys配置文件配置GitHub Gitee公钥GithubGitee 参考文章 摘要 摘要 本文详细介绍了在Windows系统上同时配置GitHub和Gitee服务的步骤。首先,通过命令行工具初始化Git配置&#x…

HTML中的`<!DOCTYPE html>`是什么意思?

诸神缄默不语-个人CSDN博文目录 在学习HTML时&#xff0c;我们经常会看到HTML文档的开头出现<!DOCTYPE html>&#xff0c;它是HTML文件的第一行。很多初学者可能会疑惑&#xff0c;为什么需要这行代码&#xff1f;它到底有什么作用呢&#xff1f;在这篇文章中&#xff0…

【前端】Node.js使用教程

目录 一、?Node.js开发环境和编译 1.1 安装Node.js 1.2 创建一个Node.js项目 1.3 编写Node.js程序 1.4 运行Node.js程序 1.5 使用Node.js模块 二、高级的Node.js编程概念和示例 2.1 异步编程 2.2 错误处理 2.3 网络请求 2.4 构建Web服务器 2.5 数据库交互 三、No…

Python网络自动化运维---SSH模块

目录 SSH建立过程 实验环境准备 一.SSH模块 1.1.Paramiko模块 1.1.1实验代码 1.1.2代码分段讲解 1.1.3代码运行过程 1.2Netmiko模块 Netmiko模块对比paramiko模块的改进&#xff1a; 1.2.1实验代码 1.2.2代码分段讲解 1.2.3代码运行过程 二.Paramiko模块和Ne…

mysql主从复制sql进程中断,报错Tablespace is missing for table ……

一 解决办法 关键执行1.2步&#xff0c;1.1/1.3结合实际环境操作。 1.1 如果从库只读开启了&#xff0c;要先关闭只读 show variables like %read_only%; set global super_read_onlyoff; set global read_onlyoff; 1.2 discart/import tablespace ALTER TABLE 表名 DISC…

网络安全:信息时代的守护者

随着互联网的快速发展&#xff0c;网络安全问题日益成为全球关注的焦点。无论是个人用户、企业组织还是政府部门&#xff0c;网络安全都已成为保障信息安全、保护隐私、确保社会秩序的基石。在这个数字化时代&#xff0c;如何应对复杂多变的网络安全威胁&#xff0c;成为了我们…

机器学习经典无监督算法——聚类K-Means算法

目录 算法原理 算法步骤 算法API 算法导入 API参数理解 算法实现 算法原理 Kmeans 算法是一种无监督的聚类算法&#xff0c;目的是将数据集中的样本划分到 K 个不同的簇中。 聚类&#xff1a;将数据集中相似的数据点归为一组或一个簇的过程。 数据集&#xff1a;一组相…

数据结构——堆(介绍,堆的基本操作、堆排序)

我是一个计算机专业研0的学生卡蒙Camel&#x1f42b;&#x1f42b;&#x1f42b;&#xff08;刚保研&#xff09; 记录每天学习过程&#xff08;主要学习Java、python、人工智能&#xff09;&#xff0c;总结知识点&#xff08;内容来自&#xff1a;自我总结网上借鉴&#xff0…