码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [从0开始机器学习]1.一元一次函数线性回归


    🐺本博主博客:ζั͡ ั͡雾 ั͡狼 ั͡✾的博客

    🎀专栏:机器学习

    🎀专栏:爬虫

    🎀专栏:OpenCV图像识别处理

    🎀专栏:Unity2D


    ⭐本节课理论视频:

    吴恩达P1-P4:机器学习理论概述

    吴恩达P5-P11:线性回归算法原理

    ⭐推荐其他人笔记:【吴恩达机器学习笔记详解】第二章 线性回归的过程

    🐺机器学习通过文字描述是难以教学学会的,每一节课我会推荐这个理论的网课,一定要看上面的理论视频!一定要看上面的理论视频!一定要看上面的理论视频!所以我只是通过代码实现,并通过注释形式来详细讲述每一步的原因,最后通过画图对比的新式来看结果比较。

    ⭐机器学习推荐博主:GoAI

    😊如果你什么都不懂机器学习,那我推荐GoAI的入门文章:机器学习知识点全面总结_GoAI的博客-CSDN博客_机器学习笔记

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. #全局变量
    4. #随机生成数据
    5. x = np.array(range(20)) # x轴数据生成1-20的整数
    6. k = np.random.randint(-10, 10)
    7. y = k * x + np.random.random(1) + 5 # y轴生成随机倍数的数据x加随机数(-1到1)加常数
    8. # 列表长度
    9. M =len(x)
    10. # 赋予变量初始点
    11. O1 =1
    12. O2 =1
    13. # 学习率,在代价函数斜率线上移动的距离步子大小
    14. A = 0.01
    15. # 迭代次数
    16. time = 10000
    17. def H(x):#假设函数,假设是个线性函数,斜率和截距不知道,是要回归算的变量
    18. # y=O1x+O2#大写O是参数
    19. global O1,O2
    20. return O1*x+O2
    21. #代价函数L=求和((H(x)-y(x))^2),其中H是关于O1,O2的函数
    22. #代价函数就是你估算的值与实际值的差的大小,使得代价函数最小,这样就能不断逼近结果
    23. #使得代价函数最小,就要使得初始点在斜率线上不断往低处移动,呈现出O1,O2俩个参数的不断微小移动
    24. # 固定公式格式,推导原理看吴恩达P11
    25. def dL_O1():#代价函数对O1参数求导的平均值
    26. global x,y,M
    27. ans=0
    28. for i in range(M):
    29. ans+=(H(x[i])-y[i])*x[i]#由于O1的系数是x,所以求导后还要乘x
    30. return ans/M
    31. def dL_O2():#代价函数对O2参数求导的平均值
    32. global x,y,M
    33. ans=0
    34. for i in range(M):
    35. ans+=(H(x[i])-y[i])
    36. return ans/M
    37. def itreation(time):#迭代,使O1,O2的代价函数趋于最低点
    38. global O1,O2,M,A
    39. for i in range(time):
    40. dO1=A*dL_O1()#一次迭代中,O1变化程度
    41. dO2=A*dL_O2()#一次迭代中,O2变化程度
    42. #同时变化,减法原因是正斜率使得O更小,负斜率使得O更大,不断往低处移动即代价函数最小
    43. O1=O1-dO1
    44. O2=O2-dO2
    45. if(i%100==0):#每100次输出一次
    46. print(f"迭代了{i}次,O1:{O1},O2:{O2}")
    47. if __name__=="__main__":
    48. print(x)
    49. print(y)
    50. itreation(time)
    51. print(O1,O2)
    52. #绘图
    53. x1=np.linspace(min(x),max(x),10)
    54. y1=O1*x1+O2
    55. fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(10,5))
    56. axes[0].scatter(x,y,s=3)
    57. axes[1].plot(x1,y1)
    58. axes[1].scatter(x,y,s=3,color="red")
    59. plt.show()

    拟合了几次都比较好

     

  • 相关阅读:
    美SEC主席最新表态:PoS代币可能是证券
    淘宝api接口大全(参数返回值说明)
    VBA技术资料MF66:使用代码插入行或列
    Python爬虫实战:用简单四步爬取小红书图片
    Kotlin第九弹:深入理解 Kotlin 泛型
    Web知识:markupsafe.escape() 函数的作用
    【Kingbase FlySync】评估工具安装及使用
    Radare2 框架介绍及使用
    c++day1
    老旧电力系统安全隐患增加 该如何预防电气线路老化等因素引发的电气火灾呢?
  • 原文地址:https://blog.csdn.net/qq_54263076/article/details/127443877
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号