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

线性回归算法

线性回归 (Linear Regression) 是一种用于预测连续值的最基本的机器学习算法,它假设目标变量 y 和特征变量 x 之间存在线性关系,并试图找到一条最佳拟合直线来描述这种关系。

y = w * x + b

其中:

  • y 是预测值

  • x 是特征变量

  • w 是权重 (斜率)

  • b 是偏置 (截距)

线性回归的目标是找到最佳的 w 和 b,使得预测值 y 与真实值之间的误差最小。常用的误差函数是均方误差 (MSE):

MSE = 1/n * Σ(y_i - y_pred_i)^2

其中:

  • y_i 是实际值。
  • y_pred_i 是预测值。
  • n 是数据点的数量。

如何求解线性回归?

1、最小二乘法

最小二乘法的目标是最小化残差平方和(RSS),其公式为:

image

其中 yi是实际值,yi^是预测值,求解后得到

image 

求解过程

  • IMG_20250727_125555_edit_374821886729047

梯度下降法

梯度下降法的目标是最小化损失函数 J(w,b)J(w,b。对于线性回归问题,通常使用均方误差(MSE)作为损失函数:

image

 

其中:

  • mm 是样本数量。
  • yiyi 是实际值。
  • y^iy^i 是预测值,由线性回归模型计算得到。

对于线性回归,梯度计算如下:

image

参数更新规则

梯度下降法通过以下规则更新参数 ww 和 b

image

 

其中:

  • αα 是学习率(learning rate),控制每次更新的步长。

使用 Python 实现线性回归

手动实现梯度下降法

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression# 生成一些随机数据
np.random.seed(0)
x = 2 * np.random.rand(100, 1)
y = 4 + 3 * x + np.random.randn(100, 1)# 初始化参数
w = 0
b = 0
learning_rate = 0.1
n_iterations = 1000# 梯度下降
for i in range(n_iterations):y_pred = w * x + bdw = -(2/len(x)) * np.sum(x * (y - y_pred))db = -(2/len(x)) * np.sum(y - y_pred)w = w - learning_rate * dwb = b - learning_rate * db# 输出最终参数
print(f"手动实现的斜率 (w): {w}")
print(f"手动实现的截距 (b): {b}")# 可视化手动实现的拟合结果
y_pred_manual = w * x + b
plt.scatter(x, y)
plt.plot(x, y_pred_manual, color='green')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Manual Gradient Descent Fit')
plt.show()

image

 

http://www.njgz.com.cn/news/652.html

相关文章:

  • 什么?智能体生成智能体?自我进化? - 戴维
  • 使用 Claude Code 的自定义 Sub Agent 完善博文写作体验
  • MCP 如何将你的 AI 从聊天机器人转变为工作流自动化利器
  • uart回环验证
  • POLIR-Laws-民法典:委托合同、行纪合同 和 中介合同 等的区别
  • MongoDB 安全数据替换脚本 (执行顺序:备份→校验→确认→清空→还原指定数据→失败回滚到备份)
  • 望言OCR视频字幕提取2025终极评测:免费版VS专业版提全方位对比(含免费下载
  • ASP.NET Core MVC 使用 X.PagedList.EF 实现分页、条件查询
  • 探索C++世界的奥秘:从核心特性到高效开发实践
  • 我的开源项目-PandaCoder迎来史诗级大更新啦
  • mongoDB 数据库的备份导出
  • 我在Android应用中发现硬编码的Facebook和Google API密钥(以及为什么这是个坏主意)
  • img convert
  • PPT_1 Word 内容 转 PPT
  • ACCESS 导出附件
  • 第二周假期进度报告(7.20 - 7.26)
  • CVE-2020-11981 Apache Airflow Celery 消息中间件命令执行漏洞 (复现)
  • nlogn分解质因数 - SPF(目前以学习最快分解质因数)
  • 在express中使用sqlite数据库的方法
  • 7.27
  • [ROI 2023] 峰值 (Day 1)
  • ASP.NET Core MVC 使用 EF Core 实现实体属性驼峰转下划线
  • C++运算符重载
  • CVE-2020-11978 Airflow dag命令注入漏洞 (复现)
  • stp
  • 暑训#1补题
  • 蓝桥杯2025省赛A组游记题解
  • 打开CMD的方式
  • 关于广度优先搜索(BFS)的笔记
  • swagger2访问时报StackOverflow错误