码农知识堂 - 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()

    拟合了几次都比较好

     

  • 相关阅读:
    算法刷题——爬楼梯
    K8S配置管理---secret与configmap
    Java 华为真题-黄金宝箱最大值
    web前端期末大作业网页设计与制作 ——汉口我的家乡旅游景点 5页HTML+CSS+JavaScript
    AI智慧安防智能监控平台EasyCVR隔天设备录像播放失败是什么原因?该如何解决?
    01科技文献
    正大杯黑客马拉松数据解析竞赛
    MySQL中多表查询、表连接(内连接和外连接)
    实例Python对比两个word文档并找出不同
    数学建模学习笔记(10):因子分析法
  • 原文地址:https://blog.csdn.net/qq_54263076/article/details/127443877
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号