当前位置:   article > 正文

深度学习--【完整代码+数据集】线性回归数据模型构建案例_深度学习案例带数据

深度学习案例带数据

作者简介:Java、前端、Python开发多年,做过高程,项目经理,架构师

主要内容:Java项目开发、Python项目开发、大学数据和AI项目开发、单片机项目设计、面试技术整理、最新技术分享

收藏点赞不迷路  关注作者有好处

文末获得源码

 根据炮哥所讲授内容进行学习心得整理与分享:

现在假设这样的一个案例,现在有一组这样的数据,是小明每天学习的时间和 最后考试的分数的数据。数据如下表所示,同时想知道小明假设学习4个小时最后考试会得多少分?

使用梯度下降法来进行处理:

梯度下降法是一种广泛使用的最优化算法,特别在机器学习和人工智能领域中,常用于递归性地逼近最小偏差模型。以下是关于梯度下降法的详细回答:

定义

梯度下降法(Gradient Descent)是一个一阶最优化算法,也称为最速下降法。它通过迭代的方式,在函数上当前点沿梯度(或近似梯度)的反方向移动一定的步长,以寻找函数的局部极小值。

求解过程

  1. 初始化:选择一个初始点作为起点,并设定一个步长(学习率)。
  2. 计算梯度:对目标函数在当前点求导,得到梯度。
  3. 更新参数:将当前点沿梯度的反方向移动一定的步长,得到新的点。
  4. 迭代:重复步骤2和3,直到满足停止条件(如梯度向量的幅值接近0,或达到预设的最大迭代次数)。

迭代公式

梯度下降法的迭代公式为:

x_{k+1} = x_k - η * ∇f(x_k)

其中,x_k 是第 k 步的迭代点,η 是步长(学习率),∇f(x_k) 是目标函数 f 在 x_k 点的梯度。

应用场景

在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降法是最常采用的方法之一。它特别适用于求解损失函数的最小值,通过一步步的迭代求解,得到最小化的损失函数和模型参数值。

梯度下降法的变种

在机器学习中,基于基本的梯度下降法发展了两种主要的梯度下降方法:

  1. 批量梯度下降法(Batch Gradient Descent):每次迭代使用全部样本来更新参数,因此每次迭代的方向都是正确的,但计算量大,适用于小数据集。
  2. 随机梯度下降法(Stochastic Gradient Descent):每次迭代只使用一个样本来更新参数,因此计算量小,但方向可能不准确,适用于大数据集。

优缺点

优点

  • 能够选择合理的参数更新方向。
  • 算法实现简单,易于理解和实现。

缺点

  • 下降速度较慢,因为梯度下降法是一阶收敛的优化算法。
  • 依赖梯度信息,如果目标函数不可微,算法将失效。
  • 如果优化过程遇到局部极小点,可能会陷入局部极小点无法继续下降。

总结

梯度下降法是一种强大的优化工具,广泛应用于机器学习和人工智能领域。通过合理设置步长和迭代次数,以及选择适当的梯度下降变种,可以有效地求解各种优化问题。

实现的最终模型训练代码如下所示:

  1. '''
  2. 线性回归实战案例
  3. '''
  4. #定义数据集
  5. x_data = [1,2,3]
  6. #定义数据标签
  7. y_data = [2,4,6]
  8. #初始化参数W
  9. w = 4
  10. #定义线性回归函数模型
  11. def forward(x):
  12. return x*w
  13. #定义损失函数
  14. def cost(xs,ys):
  15. costvalue = 0 #初始损失函数
  16. for x,y in zip(xs,ys):
  17. y_pred = forward(x) #计算线性回归的预测值
  18. costvalue += (y_pred-y)**2 #计算损失值,使用预测值减去真实值
  19. return costvalue/len(xs) #损失值除以数据集的数量,计算损失平均值
  20. #定义计算梯度函数
  21. def gradient(xs,ys):
  22. grad = 0
  23. for x,y in zip(xs,ys):
  24. grad += 2*x*(x*w-y) #计算梯度值
  25. return grad / len(xs) # 梯度值除以数据集的数量,计算梯度平均值
  26. for epoch in range(100):
  27. cost_val = cost(x_data,y_data) #计算数据值的平均损失值
  28. grad_val = gradient(x_data,y_data) #计算数据集的平均梯度值
  29. w = w-0.01*grad_val #更新参数模型值
  30. print("训练轮次:",epoch,"w=",w,"loss=",grad_val)
  31. print("100轮次的训练己得到训练好的w,此时使用训练好的w来进行推理,得出学习4个小时的得分为:",forward(4))

运算结果如下所示:

  1. 训练轮次: 0 w= 3.8133333333333335 loss= 18.666666666666668
  2. 训练轮次: 1 w= 3.644088888888889 loss= 16.924444444444447
  3. 训练轮次: 2 w= 3.4906405925925927 loss= 15.344829629629631
  4. 训练轮次: 3 w= 3.3515141372839508 loss= 13.912645530864198
  5. 训练轮次: 4 w= 3.225372817804115 loss= 12.61413194798354
  6. 训练轮次: 5 w= 3.1110046881423976 loss= 11.436812966171743
  7. 训练轮次: 6 w= 3.0073109172491073 loss= 10.369377089329044
  8. 训练轮次: 7 w= 2.9132952316391907 loss= 9.401568560991668
  9. 训练轮次: 8 w= 2.8280543433528664 loss= 8.524088828632445
  10. 训练轮次: 9 w= 2.750769271306599 loss= 7.728507204626754
  11. 训练轮次: 10 w= 2.680697472651316 loss= 7.007179865528258
  12. 训练轮次: 11 w= 2.6171657085371933 loss= 6.353176411412285
  13. 训练轮次: 12 w= 2.5595635757403885 loss= 5.760213279680471
  14. 训练轮次: 13 w= 2.507337642004619 loss= 5.222593373576959
  15. 训练轮次: 14 w= 2.4599861287508547 loss= 4.735151325376443
  16. 训练轮次: 15 w= 2.4170540900674418 loss= 4.293203868341311
  17. 训练轮次: 16 w= 2.3781290416611474 loss= 3.8925048406294565
  18. 训练轮次: 17 w= 2.3428369977727734 loss= 3.529204388837376
  19. 训练轮次: 18 w= 2.3108388779806477 loss= 3.199811979212553
  20. 训练轮次: 19 w= 2.2818272493691207 loss= 2.9011628611527116
  21. 训练轮次: 20 w= 2.255523372761336 loss= 2.63038766077846
  22. 训练轮次: 21 w= 2.231674524636945 loss= 2.384884812439137
  23. 训练轮次: 22 w= 2.2100515690041633 loss= 2.162295563278152
  24. 训练轮次: 23 w= 2.190446755897108 loss= 1.9604813107055252
  25. 训练轮次: 24 w= 2.1726717253467114 loss= 1.777503055039676
  26. 训练轮次: 25 w= 2.156555697647685 loss= 1.6116027699026387
  27. 训练轮次: 26 w= 2.141943832533901 loss= 1.4611865113783937
  28. 训练轮次: 27 w= 2.1286957414974035 loss= 1.3248091036497414
  29. 训练轮次: 28 w= 2.1166841389576456 loss= 1.2011602539757658
  30. 训练轮次: 29 w= 2.1057936193215987 loss= 1.0890519636046925
  31. 训练轮次: 30 w= 2.095919548184916 loss= 0.9874071136682545
  32. 训练轮次: 31 w= 2.0869670570209906 loss= 0.8952491163925483
  33. 训练轮次: 32 w= 2.0788501316990313 loss= 0.8116925321959133
  34. 训练轮次: 33 w= 2.0714907860737886 loss= 0.7359345625242923
  35. 训练轮次: 34 w= 2.0648183127069015 loss= 0.6672473366886941
  36. 训练轮次: 35 w= 2.058768603520924 loss= 0.6049709185977484
  37. 训练轮次: 36 w= 2.053283533858971 loss= 0.5485069661952903
  38. 训练轮次: 37 w= 2.048310404032134 loss= 0.49731298268373053
  39. 训练轮次: 38 w= 2.0438014329891345 loss= 0.4508971042999157
  40. 训练轮次: 39 w= 2.039713299243482 loss= 0.40881337456525557
  41. 训练轮次: 40 w= 2.0360067246474234 loss= 0.37065745960583
  42. 训练轮次: 41 w= 2.032646097013664 loss= 0.3360627633759516
  43. 训练轮次: 42 w= 2.0295991279590555 loss= 0.3046969054608626
  44. 训练轮次: 43 w= 2.026836542682877 loss= 0.27625852761785047
  45. 训练轮次: 44 w= 2.024331798699142 loss= 0.2504743983735193
  46. 训练轮次: 45 w= 2.0220608308205557 loss= 0.22709678785865814
  47. 训练轮次: 46 w= 2.0200018199439707 loss= 0.20590108765852033
  48. 训练轮次: 47 w= 2.018134983415867 loss= 0.1866836528103919
  49. 训练轮次: 48 w= 2.016442384963719 loss= 0.16925984521475712
  50. 训练轮次: 49 w= 2.0149077623671054 loss= 0.15346225966137914
  51. 训练轮次: 50 w= 2.0135163712128423 loss= 0.13913911542631752
  52. 训练轮次: 51 w= 2.012254843232977 loss= 0.12615279798652748
  53. 训练轮次: 52 w= 2.011111057864566 loss= 0.1143785368411206
  54. 训练轮次: 53 w= 2.0100740257972065 loss= 0.10370320673595046
  55. 训练轮次: 54 w= 2.0091337833894674 loss= 0.09402424077392742
  56. 训练轮次: 55 w= 2.0082812969397836 loss= 0.08524864496836197
  57. 训练轮次: 56 w= 2.0075083758920704 loss= 0.0772921047713148
  58. 训练轮次: 57 w= 2.0068075941421437 loss= 0.07007817499265645
  59. 训练轮次: 58 w= 2.006172218688877 loss= 0.06353754532667466
  60. 训练轮次: 59 w= 2.005596144944582 loss= 0.057607374429519353
  61. 训练轮次: 60 w= 2.0050738380830877 loss= 0.05223068614943127
  62. 训练轮次: 61 w= 2.0046002798619997 loss= 0.047355822108818536
  63. 训练轮次: 62 w= 2.004170920408213 loss= 0.0429359453786633
  64. 训练轮次: 63 w= 2.0037816345034463 loss= 0.038928590476654534
  65. 训练轮次: 64 w= 2.0034286819497913 loss= 0.035295255365498455
  66. 训练轮次: 65 w= 2.0031086716344775 loss= 0.03200103153138537
  67. 训练轮次: 66 w= 2.002818528948593 loss= 0.029014268588457348
  68. 训练轮次: 67 w= 2.0025554662467244 loss= 0.02630627018686719
  69. 训练轮次: 68 w= 2.0023169560636966 loss= 0.02385101830276219
  70. 训练轮次: 69 w= 2.0021007068310848 loss= 0.02162492326116953
  71. 训练轮次: 70 w= 2.0019046408601837 loss= 0.019606597090124467
  72. 训练轮次: 71 w= 2.0017268743798997 loss= 0.017776648028380453
  73. 训练轮次: 72 w= 2.001565699437776 loss= 0.016117494212397315
  74. 训练轮次: 73 w= 2.00141956749025 loss= 0.01461319475257472
  75. 训练轮次: 74 w= 2.0012870745244937 loss= 0.013249296575667499
  76. 训练轮次: 75 w= 2.0011669475688745 loss= 0.012012695561941436
  77. 训练轮次: 76 w= 2.001058032462446 loss= 0.01089151064282845
  78. 训练轮次: 77 w= 2.000959282765951 loss= 0.009874969649497523
  79. 训练轮次: 78 w= 2.0008697497077956 loss= 0.008953305815542953
  80. 训练轮次: 79 w= 2.000788573068401 loss= 0.008117663939424999
  81. 训练轮次: 80 w= 2.0007149729153504 loss= 0.007360015305076868
  82. 训练轮次: 81 w= 2.000648242109918 loss= 0.006673080543270278
  83. 训练轮次: 82 w= 2.000587739512992 loss= 0.006050259692566821
  84. 训练轮次: 83 w= 2.000532883825113 loss= 0.005485568787925092
  85. 训练轮次: 84 w= 2.0004831480014356 loss= 0.00497358236772083
  86. 训练轮次: 85 w= 2.0004380541879683 loss= 0.00450938134673103
  87. 训练轮次: 86 w= 2.0003971691304248 loss= 0.004088505754369661
  88. 训练轮次: 87 w= 2.000360100011585 loss= 0.0037069118839643997
  89. 训练轮次: 88 w= 2.0003264906771703 loss= 0.0033609334414584544
  90. 训练轮次: 89 w= 2.0002960182139677 loss= 0.0030472463202559177
  91. 训练轮次: 90 w= 2.0002683898473306 loss= 0.00276283666369892
  92. 训练轮次: 91 w= 2.0002433401282462 loss= 0.002504971908418696
  93. 训练轮次: 92 w= 2.000220628382943 loss= 0.0022711745302972375
  94. 训练轮次: 93 w= 2.000200036400535 loss= 0.0020591982408033616
  95. 训练轮次: 94 w= 2.000181366336485 loss= 0.0018670064049925255
  96. 训练轮次: 95 w= 2.0001644388117463 loss= 0.0016927524738612476
  97. 训练轮次: 96 w= 2.0001490911893165 loss= 0.0015347622429665957
  98. 训练轮次: 97 w= 2.000135176011647 loss= 0.0013915177669548602
  99. 训练轮次: 98 w= 2.000122559583893 loss= 0.001261642775371108
  100. 训练轮次: 99 w= 2.0001111206893967 loss= 0.0011438894496696623
  101. 100轮次的训练己得到训练好的w,此时使用训练好的w来进行推理,得出学习4个小时的得分为: 8.000444482757587

得到非接近于真实结果W=2的预测效果

相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/842113
推荐阅读
相关标签
  

闽ICP备14008679号