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

【最优化方法】最速下降法

给出点

x = [1,4,5,8,12]
y = [7,9,15,14,27]

要找出温度和冰淇淋销量之间的关系,通过线性回归来拟合求出属性和结果之间的线性关系。

如果直接把这些点连起来,是吃力不讨好的,因为如果有新数据进来大概率不在这条线上,这个行为也叫做过拟合。

对于这种明显有相关关系的数据,直接用一条直线去拟合这些数据,一次函数y=kx+b,k、b确定了直线也就确定了。找最合适的直线的过程就叫线性回归。

评判标准

找出每个真实数据点到直线的距离。

列个表看看:

定义损失函数   f(k,b)=z

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3Dx = np.array([1, 4, 5, 8, 12])
y_true = np.array([7, 9, 15, 14, 27])def model(x, k, b):return k * x + b
def mse_loss(y_true, y_pred):return np.mean((y_true - y_pred) ** 2)# 生成参数 k 和 b 的取值范围
k_values = np.linspace(0, 3, 100)  
b_values = np.linspace(-5, 5, 100) # 创建网格
K, B = np.meshgrid(k_values, b_values)# 计算每个 (k, b) 组合下的损失值
Z = np.zeros_like(K)
for i in range(len(k_values)):for j in range(len(b_values)):y_pred = model(x, K[i, j], B[i, j])Z[i, j] = mse_loss(y_true, y_pred)# 绘制三维损失函数曲面图
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')ax.plot_surface(K, B, Z, cmap='viridis')ax.set_xlabel('Slope (k)')
ax.set_ylabel('Intercept (b)')
ax.set_zlabel('MSE Loss')
ax.set_title('3D Loss Function Surface')plt.show()

问题就转化成了找到图像的谷底。

对于一次函数:

高等数学下中对于梯度的介绍:


http://www.mrgr.cn/news/49023.html

相关文章:

  • 百度搜索引擎(SEO)优化师的未来将何去何从?
  • QD1-P24 CSS 组合选择器
  • computed和watch的区别
  • windows C++-在启用 COM 的应用程序中使用并发(三)
  • 『网络游戏』摄像机跟随【31】客
  • Python快速编程小案例--逢7拍手小游戏
  • 【LeetCode】动态规划—96. 不同的二叉搜索树(附完整Python/C++代码)
  • jvm介绍
  • 【ICPC】The 2024 ICPC Kunming Invitational Contest J
  • Kubernetes 实战之旅:从 0 到 1 搭建完整集群的奇妙征程
  • 计算机毕设选题推荐【人工智能专业】
  • [论文精读]Active and Semi-Supervised Graph Neural Networks for Graph Classification
  • 交叉编译--目标平台aarch64 ubuntu 22.04
  • 【AI绘画】Midjourney进阶:三分线构图详解
  • (全网独家)面试要懂运维真实案例:HDFS重新平衡(HDFS Balancer)没触发问题排查
  • 【C++】map和set的介绍以及用法
  • 记录使用appium+夜神模拟器测试多设备时selenium和appium版本不兼容带来的问题
  • 限界上下文(Bounded Context)
  • 开发指南072-模型定义
  • 【Power Query】List.Max List.Min