2021-07-18梯度下降算法的简单案例(matlab)
2021/7/18 17:06:01
本文主要是介绍2021-07-18梯度下降算法的简单案例(matlab),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前几天在scdn上学习了一个梯度下降的视频,以此记录一下
==题目==
先大致画一下分布
training_data=[1 7.6;2 15.8;3 29;4 45;5 66.5;6 91;10 225];%样本 dataSize=length(training_data); plot(training_data(:,1),training_data(:,2),'r*'); hold on;
完整的代码:
training_data=[1 7.6;2 15.8;3 29;4 45;5 66.5;6 91;10 225];%样本 maxIndex=2; %θ最大下标 alpha=0.001; %学习率 threshold=0.0001; %误差中止变量 maxTime=5000; %最大迭代次数 dataSize=length(training_data); plot(training_data(:,1),training_data(:,2),'r*'); hold on; %初始化 paraLen=maxIndex+1; %θ的个数 theta=zeros(paraLen,1); %初始化θ都为0 theta0=theta; times=0; %初始化迭代次数 cost0=0; %初始化第一次损失函数值 cost1=1; %初始化第二次损失函数值 %终止条件:两次损失函数的差值小于阈值 , 循环次数 while abs(cost1-cost0)>threshold && times<maxTime theta0=theta; times=times+1; cost0=costFunction(theta',maxIndex,training_data); tmp=zeros(paraLen,1); for j=1:dataSize %1-7 %先考虑第一行 X=zeros(paraLen,1); for k=1:paraLen X(k)=training_data(j,1)^(k-1); end for i=1:paraLen tmp(i)=tmp(i)+(theta0'*X-training_data(j,2))*X(i); end end %更新θ for i=1:paraLen tmp(i)=tmp(i)/dataSize; theta(i)=theta0(i)-alpha*tmp(i); end %更新后的cost cost1=costFunction(theta',maxIndex,training_data); end %验证:画hθ的拟合 X=0:0.01:10; Y=X; for i=1:length(X) Y(i)=theta'*[1;X(i);X(i)^2]; end plot(X,Y,'b')
开始拟合
假设模型:
进行初始化
利用梯度下降算法,找到 θ
这篇关于2021-07-18梯度下降算法的简单案例(matlab)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-19Vue3+SpringBoot资料入门教程
- 2024-11-19Vue3+SpringBoot资料入门教程
- 2024-11-18Springboot框架入门:简单教程详解
- 2024-11-18Springboot框架入门:简单教程助你快速上手
- 2024-11-18SpringBoot企业级开发入门教程
- 2024-11-18Springboot企业级开发入门教程
- 2024-11-18SpringBoot微服务入门教程
- 2024-11-18Springboot微服务入门教程
- 2024-11-18Springboot项目开发入门:轻松开启你的第一个Spring Boot应用
- 2024-11-18Springboot项目开发入门教程