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

小试梯度下降算法

参考资料:

随机梯度下降法_通俗易懂讲解梯度下降法_weixin_39653442的博客-CSDN博客

梯度下降(Gradient Descent)_AI耽误的大厨的博客-CSDN博客

梯度下降法_踢开新世界的大门的博客-CSDN博客

仅做学习笔记

#给定样本求最佳 w 与 b
import matplotlib.pyplot as plot
import numpy as np#预测目标变量y的函数
def fun(w,b,x):f = w*x+breturn f#损失函数: J = 1/m*∑(f(x)-y)^2 其中f(x)=
#求导推理得
# w = w-alpha*1/m*∑[(f(x)-y)*x] 其中(f(x)-y)*x 为J对w的偏导
# b = b-alpha*1/m*∑[(f(x)-y)] 其中(f(x)-y) 为J对b的偏导#遍历整个样本数据,计算偏差,使用批量梯度下降法
def loopsum(w,b,x,y):m = len(x)w_sum = 0b_sum = 0loss_sum = 0for i in range(m):w_ = (fun(w,b,x[i])-y[i])*x[i]b_ = fun(w,b,x[i])-y[i]loss = b_*b_w_sum += w_b_sum += b_loss_sum += lossreturn (w_sum,b_sum,loss_sum)#批量梯度下降法更新w与b
def bacth_update_gradient(w,b,x,y,alpha):m = len(x)loss = 0w_tmp = (loopsum(w,b,x,y)[0]/m) while abs(w_tmp)>1e-5: #梯度近似于0,则不再更新w与b的值result = loopsum(w,b,x,y)w_tmp = (result[0]/m)b_tmp = (result[1]/m)loss  = (result[2]/m)w = w-alpha*w_tmpb = b-alpha*b_tmpreturn (w,b,loss)def main():#样本数据x = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]y = [1,4,7,4,1,6,7,3,9,6,11,10,13,14,11,16,19,18,19,20]alpha = 0.01 #学习率--步长w = 1 #初始化w值为1b = 1 #计算result = bacth_update_gradient(w,b,x,y,alpha)print(" w=%f\n b=%f\n loss=%f" %(result[0],result[1],result[2]))plot.figure(figsize=(6,4)) #新建6*4画布plot.scatter(x,y,label='y') #绘制散点图#plot.xlim(0,21)#plot.ylim(0,21)plot.xlabel('x',fontsize=20)plot.ylabel('y',fontsize=20)x=np.array(x)f=np.array(w*x+b)plot.plot(x,f,color ='red')#绘制拟合曲线plot.show()if __name__=="__main__":main()

http://www.lryc.cn/news/98451.html

相关文章:

  • 【React】版本正确安装echarts-liquidfill(水球图表)包引入不成功问题
  • Debian 11 编译安装 git 2.42.0(基于 OpenSSL)
  • 将Linux init进程设置为systemd
  • element-ui form表单的动态rules校验
  • AGI如何提高智力水平
  • 【广州华锐互动】无人值守变电站AR虚拟测控平台
  • 【C语言】文件操作(二)
  • Kotlin小节
  • 西安电子科技大学
  • 【数据挖掘】PCA/LDA/ICA:A成分分析算法比较
  • 微服务模式:业务服务模式
  • idea中创建请求基本操作
  • springboot整合log4j2
  • Linux输出内容到指定文件
  • mysql主从同步怎么跳过错误
  • 【论文阅读】DEPIMPACT:反向传播系统依赖对攻击调查的影响(USENIX-2022)
  • Nginx 功能及配置详解
  • CSS 瀑布流效果效果
  • Python 进阶(一):PyCharm 下载、安装和使用
  • 微信小程序使用ECharts的示例详解
  • 微信小程序生成二维码(weapp-qrcode)可添加logo
  • 【云原生】Docker容器资源限制(CPU/内存/磁盘)
  • 内核链表在用户程序中的移植和使用
  • 使用C#基于ComPDFKit SDK快速构建PDF阅读器
  • el-tabel导出excel表格
  • 双击start.bat文件闪退,运行报错“unable to access jarfile”
  • 大数据Flink(五十一):Flink的引入和Flink的简介
  • c语言的数据类型 -- 与GPT对话
  • Truffle 进行智能合约测试
  • vb+access库存管理系统设计与实现