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

机器学习算法-一元线性回归(最小二乘拟合 and 梯度下降)

先来看看理论知识吧

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Python实现

import numpy as np
import sympy as spX = [1, 2, 3, 4, 5]
Y = [1, 3, 6, 7, 6]class LinerRegress:def __init__(self, learn_rate=0.001, gradient_times=100):# 训练特征数据self.train_x = []# 训练标签数据self.train_y = []# 线性回归斜率self.w = 0# 线性回归截距self.b = 0# 学习率self.learn_rate = learn_rate# 梯度下降次数self.gradient_times = gradient_timesdef fit(self, X, Y):self.train_x, self.train_y = np.array(X), np.array(Y)w,b = self.min_twicemultiply(self.train_x,self.train_y)self.w, self.b = self.gradient_descend(self.train_x, self.train_y, w, b, self.gradient_times)# 最小二乘拟合确定 w 和 bdef min_twicemultiply(self,X,Y):x0, x1 = np.ones(len(X)), np.array(X)x0x0, x1x1 = np.dot(x0, x0), np.dot(x1, x1)x1x0 = x0x1 = np.dot(x0, x1)yx0, yx1 = np.dot(self.train_y, x0), np.dot(self.train_y, x1)w = (x1x0 * yx0 - x0x0 * yx1) / (x0x1 * x1x0 - x0x0 * x1x1)b = (x1x1 * yx0 - x0x1 * yx1) / (x1x1 * x0x0 - x1x0 * x0x1)return w,b# 梯度下降调优参数 w 和 bdef gradient_descend(self, x, y, w, b, times):_w, _b = sp.symbols('_w _b')size = len(y)# 损失函数loss_f1 同时对w和b做偏导数求极小值# 这里损失函数loss_f2只对截距w做了"梯度下降"算法调整loss_f1, loss_f2 = 0.0, 0.0for xv, yv in zip(x, y):loss_f1 += (yv - _w * xv - _b) ** 2loss_f2 += (yv - _w * xv - b) ** 2loss_f1, loss_f2 = sp.simplify(loss_f1 / (2 * size)), sp.simplify(loss_f2 / (2 * size))res = sp.solve([sp.diff(loss_f1, _w), sp.diff(loss_f1, _b)], [_w, _b])# loss_f1 的w和b的极值点存在if len(res) != 0:return float(res.get(_w)), float(res.get(_b))else:next_w = wloss_f2_diff = sp.diff(loss_f2, _w)for _ in range(times):next_w -= loss_f2_diff.subs({_w: next_w}) * self.learn_ratereturn next_w, bdef predict(self, data):return self.w * data + self.bmodel = LinerRegress()
model.fit(X, Y)
print(model.predict(6))
http://www.xdnf.cn/news/8696.html

相关文章:

  • 书生五期--端侧小模型论文分类微调打榜
  • svn: E155017: Checksum mismatch while updating 校验错误的解决方法
  • 从 0 到 1:Spring Boot 与 Spring AI 深度实战(基于深度求索 DeepSeek)
  • DeepSeek 赋能金融量化交易:从技术突破到实战革新
  • 2025.5.19-2025.5.25学习周报
  • CAPL自动化-诊断Demo工程
  • static详解
  • LLM 使用本地模型 提取新生成 文本 的token ID序列
  • C++虚函数与类对象模型深度解析
  • 使用Python自动化Word文档处理:段落样式复制、表格转换与模板生成
  • GitLab-CI将项目Wiki自动部署到文档中心
  • 前置过滤器和净水机安哪个?
  • Docker核心技术:Docker原理之Union文件系统
  • UART、RS232、RS485基础知识
  • HTTP 与 HTTPS
  • linux 内核 watchdog 模块学习及实践过程中遇见的问题总结
  • IP、子网掩码、默认网关、DNS
  • 软件工程重点复习(2)
  • 当NLP能模仿人类写作:原创性重构而非终结
  • 《Shell脚本实战:打造交互式多级菜单与LAMP/LNMP环境配置指南》
  • python学习day28
  • 博图SCL星三角降压启动从安装到编程步骤详解
  • libreoffice容器word转pdf
  • Word转PDF--自动生成目录
  • 教师技术知识对人工智能赋能下教学效果的影响:以教学创新为中介的实证研究
  • java每日精进 5.25【Redis缓存】
  • 一文讲透golang channel 的特点、原理及使用场景
  • Linux相关概念和易错知识点(41)(UDP、TCP报头结构)
  • 识别速度快且精准的OCR工具
  • 【短距离通信】【WiFi】WiFi7起源和应用场景介绍