看了神经网络的梯度下降(Gradient Descent)逼近的方法之后就写了一个拟合散点(y= kx+b)的程序,原理是使方差最小(对拟合直线来说这样的算法肯定不算是好算法)。

x=(1:10)';
y=[2;3;3;4;5;6;4;6;6;7];


拟合这样一组散点,并且将拟合结果和polyfit函数的结果进行对比。顺便画出了cost函数随迭代次数变化的曲线

x=(1:10)';
y=[2;3;3;4;5;6;4;6;6;7];
k=rand(1);
b=0; %初始化k,b
m=length(x);
learningrate=0.05;
costs=[];
for l=1:500yhat=k*x+b;%相当于正向传播cost=1/m*sum(1/2*(y-yhat).^2);costs=[costs,cost];dk=-1/m*x'*(y-yhat);db=-1/m*sum(y-yhat);%求梯度k=k-learningrate*dk;b=b-learningrate*db;%更新参数endsubplot(2,1,1);scatter(x,y);hold on;plot(x,k*x+b);
p=polyfit(x,y,1);
plot(x,polyval(p,x));
subplot(2,1,2);
plot(costs);


迭代500次,步长0.05,得到k=0.4983,b=1.8571
polyfit拟合的结果是0.496969696969697 1.86666666666667
两条曲线直线画在一个坐标轴基本重合,看到cost函数也下降的很快。当迭代次数为1500时,k=0.496969731305184,b=1.866666427629106。

在三维坐标轴中将k,b,cost画出来能直观看见梯度下降的过程。循环中添加以下代码

    axis([0,1.5,0,2,0,.6]);%固定坐标轴scatter3(k,b,cost,'r','*');hold on ;drawnow;pause(0.02);

matlab用梯度下降拟合回归直线相关推荐

  1. R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、使用attributes函数查看线性回归模型的属性信息、获取模型拟合对应的残差值residuals

    R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.使用attributes函数查看线性回归模型的属性信息.获取模型拟合对应的残差值residuals 目录

  2. R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、可视化散点图并添加简单线性回归直线、添加模型拟合值数据点、添加拟合值点和实际数据点之间的线段表示残差大小、col参数自定义设置

    R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.可视化散点图并添加简单线性回归直线.添加模型拟合值数据点.添加拟合

  3. R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、使用residuls函数从模型中提取每个样本点的残差值、可视化残差与拟合值之间的散点图来看残差的分布模式

    R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.使用residuls函数从模型中提取每个样本点的残差值.可视化残差与拟合值之间的散点图来看残差的分布模式 目录

  4. R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、使用residuls函数从模型中提取每个样本点的残差值、计算残差和和残差平方和

    R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.使用residuls函数从模型中提取每个样本点的残差值.计算残差和和残差平方和 目录

  5. R语言lm函数构建简单线性回归(建立线性回归模型)、拟合回归直线、通过方差分析按变异的来源把结果变量的自由度、平方和、平均平方和进行分解、使用回归平方和与总的平方和计算调整R方指标(调整后的决定系数)

    R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.通过方差分析按变异的来源把结果变量的自由度.平方和.

  6. R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、可视化散点图并添加简单线性回归直线、添加模型拟合值数据点、自定义pch参数设置数据点形式

    R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.可视化散点图并添加简单线性回归直线.添加模型拟合值数据点.自定义pch参数设置数据点形式 目录

  7. R语言使用lm函数构建简单线性回归模型(建立线性回归模型)、拟合回归直线、使用plot函数可视化模型诊断图

    R语言使用lm函数构建简单线性回归模型(建立线性回归模型).拟合回归直线.使用plot函数可视化模型诊断图 目录

  8. 13_线性回归分析、线性模型、损失函数、最小二乘法之梯度下降、回归性能评估、sklearn回归评估API、线性回归正规方程,梯度下降API、梯度下降 和 正规方程对比

    1.线性回归 1.1 线性模型 试图学得一个通过属性的线性组合来进行预测的函数: 1.2 定义 定义:线性回归通过一个或者多个自变量与因变量之间进行建模的回归分析.其中特点为一个或多个称为回归系数的模 ...

  9. 机器学习(11)线性回归(1)理论:损失函数(含最小二乘法)、正规方程、梯度下降、回归性能评估(均方差)

    目录 一.线性回归基础理论 1.定义与公式 2.线性关系(单特征与双特征) 2-1.单特征线性关系 2-2.双特征平面关系 2-3.其他线性模型 二.线性回归的损失和优化原理 1.损失函数 1.定义 ...

最新文章

  1. 002:用Python设计第一个游戏
  2. 修改vb6的编译器c2.exe使它可以输出汇编代码_xv6笔记-启动代码分析
  3. python中矩阵的表示方法_关于Python表示矩阵的方法详解
  4. ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小
  5. 12.2 全局CSS样式
  6. 15行代码AC_ 【蓝桥杯】兴趣小组(解题报告+思考)
  7. (送书和红包)快人一步,掌握前端函数式编程
  8. 修改myeclipse字体与操作系统的字体一致
  9. 程序员是否应该创造面向 IDE 而非人类的编程语言?
  10. Ubuntu 如何进入系统文件/etc/profile修改内容
  11. Google Maps API 进级: GPolygon对象2
  12. Atitit dubbo使用总结 attilax总结 艾龙 总结 1. 概念 1 1.1. Dubbo提供的注册中心有如下几种类型可供选择: 2 1.1.1. Multicast注册中心 2 1.1
  13. WCF学习 (三)深入认识WCF契约
  14. 内存碎片的定义、种类、产生原因以及解决办法
  15. vbnet 操作autoCAD之 给出矩形如何画内切椭圆
  16. Java:Stream三部曲(三):Stream流处理器
  17. html 字体形状,二十款漂亮的CSS字体样式
  18. 家装家居自救指南:线上线下大融合
  19. 小程序团购商品CPS接入,实现达人分佣模式
  20. 区块链潮起:行业人才紧缺 欧科云链何以“职”得去?

热门文章

  1. 秒杀系统“减库存”设计的核心逻辑
  2. 网络领域内容榜~加油共勉~
  3. 华尔街老司机:在美火热的智能投顾,如何移植到中国?
  4. 我国区块链技术发展仍处于早期发展阶段 要建设国产自主可控的联盟链
  5. 代码在线高亮工具[写源代码的word可用]
  6. FORTRAN中の时间函数
  7. KBEngine问题总结
  8. 2022 AIOps挑战赛方案总结
  9. 电力电子技术仿真模型
  10. USB-IF宣布三星Galaxy S20系列手机获得USB快速充电器认证