码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [从0开始机器学习]4.线性回归 正规方程


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

    🎀专栏:机器学习

    🎀专栏:爬虫

    🎀专栏:OpenCV图像识别处理

    🎀专栏:Unity2D


    ⭐本节课理论视频:P23-P25 正规方程

    ⭐本节课推荐其他人笔记:正规方程(Normal equations)推导过程_momentum_的博客

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

    ⭐机器学习推荐博主:GoAI的博客_CSDN博客-深度学习,机器学习,大数据笔记领域博主

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

    在线性回归中实际就是求代价函数对系数变量求导,导数为0的时候,即代价函数最小的时候,系数矩阵的值。以多元一次函数为例

     使用前提:1.X特征数量小于样本数量

                        2.X矩阵中不存在线性相关的量

    缺点:n很大时候(n>10000),比起梯度下降法,运行远远慢

    1. import numpy as np
    2. # 全局变量
    3. # 生成数据
    4. # X中每一行代表一条数据i,代表着一个等式,其中列数代表着变量数,每个变量的系数是不知道的
    5. # 每一行数据是y=k0x0+k1x1+k2x2+k3x3+k4x4,
    6. # k是我们要回归的系数向量,x1,x2,x3,x4是每一行数据其中
    7. # k0代表常数,x0恒为1
    8. X = np.array([[5, 100, 58, -3],
    9. [7, 120, 59, -3],
    10. [3, 140, 50, -5],
    11. [10, 80, 45, -1],
    12. [6, 96, 55, -7],
    13. [15, 200, 52, -11],
    14. [11, 125, 65, -5],
    15. [12, 63, 100, -3],
    16. [20, 500, 66, -10]])
    17. # 假设K系数为这个,咱们的算法就是逼近这个结果,当然,如果有自己的数据就更好了
    18. preK = [12, -1, 2, 8] + np.random.random((1, 4))
    19. # Y中的数据量等于X矩阵的行数
    20. Y = (np.dot(preK, X.T) + np.random.random() * 15).ravel() # 加的一项是随机常数项,最后将矩阵转换成数组向量
    21. # X矩阵中第一列加入x0=1参数
    22. X = np.insert(X, 0, np.ones((1, len(X))), axis=1)
    23. # 数据个数
    24. m = len(X)
    25. # 参数个数
    26. n = len(X[0])
    27. # 输出
    28. print(f"有{n}个参数,就是X列数算上常数项所乘的单位1")
    29. print(f"有{m}条数据,就是加常数后X行数")
    30. # 系数变量K矩阵就是多元参数的系数,就是我们要递归的重点变量,先给这个矩阵的每个值都赋予初始值1
    31. K = np.ones(n)
    32. #正规方程,固定公式详细推导见吴恩达P23
    33. def NorEq():
    34. global X,Y,K
    35. m1=np.dot(X.T,X)
    36. m2=np.matrix(m1).I
    37. m3=np.dot(m2,X.T)
    38. K=np.dot(m3,Y.T)
    39. if __name__ == "__main__":
    40. print("X",X)
    41. print("Y",Y)
    42. NorEq()
    43. print("K",K)
    44. print("preK",preK)

    可见结果完全一致

  • 相关阅读:
    什么是中间人攻击
    go-GMP和Scheduler
    Palomar Technologies 在新加坡扩建创新中心
    linux相关指令
    【性能】如何计算 Web 页面的 FP 指标
    uni单选radio
    产品代码都给你看了,可别再说不会DDD(三):战略设计
    [go学习笔记.第十一章.项目案例] 2.客户信息管理系统
    干货分享|一些好的数据分析、数据挖掘的网站或数据学习网站
    2022年测试岗最新自动化测试面试题整理,干货满满
  • 原文地址:https://blog.csdn.net/qq_54263076/article/details/127458807
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号