【机器学习】用Jupyter Notebook实现并探索单变量线性回归的代价函数以及遇到的一些问题

news2024/9/27 15:26:28

引言

在机器学习中,代价函数(Cost Function)是一个用于衡量模型预测值与实际值之间差异的函数。在监督学习中,代价函数是评估模型性能的关键工具,它可以帮助我们了解模型在训练数据上的表现,并通过优化过程来改善模型

文章目录

  • 引言
  • 二、实现用Jupyter Notebook并探索单变量线性回归的代价函数
    • 2.1 工具
    • 2.2 问题陈述
    • 2.3 计算成本
    • 2.4 代价函数直观
    • 2.5 代价函数可视化 - 3D
    • 2.6 更大的数据集
    • 2.7 凸成本表面
    • 2.8 总结
  • 三、遇到的问题
    • 3.1 没有`ipympl`第三方库
      • 3.1.1 问题
      • 3.1.2 解决方法
    • 3.2 运行matplotlib代码没有显示图片
      • 3.2.1 问题
      • 3.2.2 解决方法

二、实现用Jupyter Notebook并探索单变量线性回归的代价函数

2.1 工具

在这个实验室中使用:

  • NumPy,一个流行的科学计算库
  • Matplotlib,一个流行的数据绘图库
  • 本地目录中的 lab_utils_uni.py 文件中的本地绘图例程
import numpy as np
%matplotlib widget
import matplotlib.pyplot as plt
from lab_utils_uni import plt_intuition, plt_stationary, plt_update_onclick, soup_bowl
plt.style.use('./deeplearning.mplstyle')

2.2 问题陈述

希望有一个模型,可以根据房屋的大小预测房价。
使用的两个数据点:一个1000平方英尺的房子以30万美元的价格售出,一个2000平方英尺的房子以50万美元的价格售出。

尺寸 (1000 sqft)价格 (10万美元)
1.0300
2.0500
  • x_train = np.array([1.0, 2.0]) # (尺寸,以1000平方英尺为单位)
  • y_train = np.array([300.0, 500.0]) # (价格,以1000美元为单位)

2.3 计算成本

在这里,成本是衡量模型在预测房屋目标价格方面表现如何的度量,对于房屋数据,“价格”一词被使用
单变量成本方程是:
>𝐽(𝑤,𝑏)=1/(2*𝑚)∑𝑖=0𝑚−1(𝑓𝑤,𝑏(𝑥(𝑖))−𝑦(𝑖))2(1)

其中 𝑓𝑤,𝑏(𝑥(𝑖))=𝑤𝑥(𝑖)+𝑏(2)

  • 𝑓𝑤,𝑏(𝑥(𝑖))是使用参数 𝑤,𝑏 对示例 𝑖 的预测
  • (𝑓𝑤,𝑏(𝑥(𝑖))−𝑦(𝑖))2是目标值和预测值之间的平方差
  • 这些差异被加总,然后除以 2m 来产生成本 𝐽(𝑤,𝑏)

注意,求和范围通常是从1到m,而代码将从0到m-1
下面的代码通过遍历每个示例来计算成本。在每个循环中: f w b f_wb fwb,一个预测被计算
目标值和预测值之间的差异被计算并平方,这被加到总成本中

def compute_cost(x, y, w, b): 
    """
    计算线性回归的代价函数。
    
    参数:
      x (ndarray (m,)): 数据,m个示例
      y (ndarray (m,)): 目标值
      w,b (标量)    : 模型参数
    
    返回:
        total_cost (float): 使用w,b作为线性回归参数来拟合x和y中的数据点的成本
               to fit the data points in x and y
    """
    # 训练示例的数量
    m = x.shape[0] 
    
    cost_sum = 0 
    for i in range(m): 
        f_wb = w * x[i] + b   
        cost = (f_wb - y[i]) ** 2  
        cost_sum = cost_sum + cost  
    total_cost = (1 / (2 * m)) * cost_sum  
    return total_cost

2.4 代价函数直观

目标是找到一个模型 𝑓𝑤,𝑏(𝑥)=𝑤𝑥+𝑏,其中参数 𝑤,𝑏 可以准确预测房屋的价值。代价是衡量模型在训练数据上的准确性的度量。
在这里插入图片描述
上述的成本方程显示,如果 𝑤 和 𝑏 可以选择,使得预测 𝑓𝑤,𝑏(𝑥)与目标数据 y y y 匹配,那么 ( f w , b ( x ( i ) ) − y ( i ) ) 2 (f_{w,b}(x^{(i)}) - y^{(i)})^2 (fw,b(x(i))y(i))2 项将变为零,成本最小化
在之前的实验室中,你确定 b = 100 b = 100 b=100 提供了最优解,所以让我们将 b b b 设置为 100,并专注于 w w w
下面,使用滑块控制来选择最小化成本的 $ w $ 值。更新图形可能需要几秒钟,如下图所示:

plt_intuition(x_train, y_train)

在这里插入图片描述

该图包含几个值得注意的点

  • 成本在 $ w = 200 $ 时最小化,这与之前的结果相匹配
  • 由于成本方程中目标值和预测值之间的差异被平方,当 $ w $ 太大或太小时,成本会迅速增加
  • 使用通过最小化成本选择的 $ w $ 和 $ b $ 值,可以得到一条完美符合数据的直线

2.5 代价函数可视化 - 3D

可以通过在 3D 中绘制或在使用等高线图来查看成本如何随着 w w w b b b 的变化而变化

2.6 更大的数据集

查看包含更多数据点的场景是有益的。这个数据集包括不在同一直线上的数据点。这对成本方程意味着什么?我们能找到 $ w $ 和 $ b $,使成本为 0?

x_train = np.array([1.0, 1.7, 2.0, 2.5, 3.0, 3.2])
y_train = np.array([250, 300, 480,  430,   630, 730,])

在等高线图中,点击一个点来选择 w w w b b b 以达到最低成本。使用等高线来指导你的选择。注意,更新图形可能需要几秒钟。

plt.close('all') 
fig, ax, dyn_items = plt_stationary(x_train, y_train)
updater = plt_update_onclick(fig, ax, x_train, y_train, dyn_items)

在这里插入图片描述

在上方,请注意左侧图中的虚线。这些代表了训练集中每个示例对成本的贡献。在这种情况下,大约 w = 209 w = 209 w=209 b = 2.4 b = 2.4 b=2.4 提供低成本。请注意,由于我们的训练示例不在同一直线上,最低成本不为零

2.7 凸成本表面

成本函数将损失平方的事实确保了“误差表面”像汤碗一样是凸的。它总是通过在所有维度上跟随梯度来达到最小值。在之前的图中,由于 $ w $ 和 $ b $ 的维度不同,这不容易识别。在展示的下一个图中, w w w b b b 是对称的:

soup_bowl()

在这里插入图片描述

2.8 总结

  • 成本方程提供了衡量你的预测与训练数据匹配程度的度量
  • 最小化成本可以提供 w w w b b b 的最优值

三、遇到的问题

3.1 没有ipympl第三方库

3.1.1 问题

报错:

ModuleNotFoundError: No module named ‘ipympl’

3.1.2 解决方法

添加一个单元格,安装对应算法包,因为我是conda启动,所以用conda的安装命令,安装完即可
在这里插入图片描述

3.2 运行matplotlib代码没有显示图片

3.2.1 问题

报错:

[Open Browser Console for more detailed log - Double click to close this message]
Failed to load model class ‘MPLCanvasModel’ from module ‘jupyter-matplotlib’
Error: Script error for “jupyter-matplotlib”
http://requirejs.org/docs/errors.html#scripterror
at makeError (http://localhost:8888/static/components/requirejs/require.js?v=d37b48bb2137faa0ab98157e240c084dd5b1b5e74911723aa1d1f04c928c2a03dedf922d049e4815f7e5a369faa2e6b6a1000aae958b7953b5cc60411154f593:168:17)
at HTMLScriptElement.onScriptError (http://localhost:8888/static/components/requirejs/require.js?v=d37b48bb2137faa0ab98157e240c084dd5b1b5e74911723aa1d1f04c928c2a03dedf922d049e4815f7e5a369faa2e6b6a1000aae958b7953b5cc60411154f593:1735:36)

3.2.2 解决方法

清空浏览器缓存,关闭Jupyter Notebook,并重新打开即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1949346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IPD推行成功的核心要素(十五)项目管理提升IPD相关项目交付效率和用户体验

研发项目往往包含很多复杂的流程和具体的细节。因此,一套完整且标准的研发项目管理制度和流程对项目的推进至关重要。研发项目管理是成功推动创新和技术发展的关键因素。然而在实际管理中,研发项目管理常常面临着需求不确定、技术风险、人员素质、成本和…

PyTorch安装CUDA标准流程(可解决大部分GPU无法使用问题)

最近一段时间在研究PyTorch中的GPU的使用方法,之前曾经安装过CUDA,不过在PyTorch中调用CUDA时无法使用。考虑到是版本不兼容问题,卸载后尝试了其他的版本,依旧没有能解决问题,指导查阅了很多资料后才找到了解决方案。 …

uni-app声生命周期

应用的生命周期函数在App.vue页面 onLaunch:当uni-app初始化完成时触发(全局触发一次) onShow:当uni-app启动,或从后台进入前台时显示 onHide:当uni-app从前台进入后台 onError:当uni-app报错时触发,异常信息为err 页面的生命周期 onLoad…

数据治理之“财务一张表”

前言 信息技术的发展,伴随企业业务系统的纷纷建设,提升业务处理效率的同时,也将企业的整体主价值链流程分成了一段一段的业务子流程,很多情况下存在数据上报延迟、业务协作不顺畅、计划反馈不及时、库存积压占资多……都可以从数据…

20240725java的Controller、DAO、DO、Mapper、Service层、反射、AOP注解等内容的学习

在Java开发中,‌controller、‌dao、‌do、‌mapper等概念通常与MVC(‌Model-View-Controller)‌架构和分层设计相关。‌这些概念各自承担着不同的职责,‌共同协作以构建和运行一个应用程序。‌以下是这些概念的解释:‌…

深度学习趋同性的量化探索:以多模态学习与联合嵌入为例

深度学习趋同性的量化探索:以多模态学习与联合嵌入为例 参考文献 据说是2024年最好的人工智能论文,是否有划时代的意义? [2405.07987] The Platonic Representation Hypothesis (arxiv.org) ​arxiv.org/abs/2405.07987 趋同性的量化表达 …

OAK相机支持的图像传感器有哪些?

相机支持的传感器 在 RVC2 上,固件必须具有传感器配置才能支持给定的相机传感器。目前,我们支持下面列出的相机传感器的开箱即用(固件中)传感器配置。 名称 分辨率 传感器类型 尺寸 最大 帧率 IMX378 40563040 彩色 1/2.…

产品经理-简历的筛选标准(22)

什么是简历 简要地描述过往的经历—一份简历的核心要素就是介绍你所经历过的事情 因此准备简历的关键是“简”“要”二字: 一方面是你挑选出来的事情,一定是重要的、能给予你所谋求的位置提供竞争力的事情;另一方面是在描述这件事情的时候 要…

《Java初阶数据结构》----6.<优先级队列之PriorityQueue底层:堆>

前言 大家好,我目前在学习java。之前也学了一段时间,但是没有发布博客。时间过的真的很快。我会利用好这个暑假,来复习之前学过的内容,并整理好之前写过的博客进行发布。如果博客中有错误或者没有读懂的地方。热烈欢迎大家在评论区…

Golang | Leetcode Golang题解之第290题单词规律

题目: 题解: func wordPattern(pattern string, s string) bool {word2ch : map[string]byte{}ch2word : map[byte]string{}words : strings.Split(s, " ")if len(pattern) ! len(words) {return false}for i, word : range words {ch : patt…

【Python实战因果推断】56_因果推理概论6

目录 Causal Quantities: An Example Bias Causal Quantities: An Example 让我们看看在我们的商业问题中,你如何定义这些量。首先,你要注意到,你永远无法知道价格削减(即促销活动)对某个特定商家的确切影响&#xf…

算法 定长按组翻转链表

一、题目 已知一个链表的头部head,每k个结点为一组,按组翻转。要求返回翻转后的头部 k是一个正整数,它的值小于等于链表长度。如果节点总数不是k的整数倍,则剩余的结点保留原来的顺序。示例如下: (要求不…

数据集成工具之kettle

Kettle 是一个用于数据集成的开源工具,由 Pentaho 开发,现已由 Hitachi Vantara 维护。Kettle 的全名是 Pentaho Data Integration (PDI),主要用于数据提取、转换和加载(ETL)过程。 1. 核心组件 Spoon: 图形化的设计工…

【MetaGPT系列】【MetaGPT完全实践宝典——多智能体实践】

目录 前言一、智能体1-1、Agent概述1-2、Agent与ChatGPT的区别 二、多智能体框架MetaGPT2-1、安装&配置2-2、使用已有的Agent(ProductManager)2-3、多智能体系统介绍2-4、多智能体案例分析2-4-1、构建智能体团队2-4-2、动作/行为 定义2-4-3、角色/智…

mysql面试(六)

前言 本章节详细讲解了一下mysql执行计划相关的属性释义,以及不同sql所出现的不同效果 执行计划 一条查询语句经过mysql查询优化器的各种基于成本和各种规则优化之后,会生成一个所谓的 执行计划,这个执行计划展示了这条查询语句具体查询方…

Qt自定义MessageToast

效果&#xff1a; 文字长度自适应&#xff0c;自动居中到parent&#xff0c;会透明渐变消失。 CustomToast::MessageToast(QS("最多添加50张图片"),this);1. CustomToast.h #pragma once#include <QFrame>class CustomToast : public QFrame {Q_OBJECT pub…

广义线性模型(2)线性回归

线性回归算法应该是大多数人机器学习之路上的第一站&#xff0c;因为线性回归算法原理简单清晰&#xff0c;但却囊括了拟合、优化等等经典的机器学习思想。 说到线性回归&#xff0c;我们得先说说回归与分类、线性与非线性这些概念的区别。 一 分类与回归的区别 机器学习中的…

【虚拟机】Windows(x86)上部署ARM虚拟机(Ubuntu)

【虚拟机】Windows&#xff08;x86&#xff09;上部署ARM虚拟机&#xff08;Ubuntu&#xff09; 零、起因 最近在学嵌入式&#xff0c;这就不得不涉及ARM指令集&#xff0c;但是电脑是x86指令集的&#xff0c;用手机不太方便&#xff0c;买开发板又要等几天……&#xff0c;总…

商场导航系统:从电子地图到AR导航,提升顾客体验与运营效率的智能解决方案

商场是集娱乐、休闲、社交于一体的综合性消费空间&#xff0c;随着商场规模的不断扩大和布局的日益复杂&#xff0c;顾客在享受丰富选择的同时&#xff0c;也面临着寻路难、店铺曝光率低以及商场管理效率低下等挑战。商场导航系统作为提升购物体验的关键因素&#xff0c;其重要…

springcloud RocketMQ 客户端是怎么走到消费业务逻辑的 - debug step by step

springcloud RocketMQ &#xff0c;一个mq消息发送后&#xff0c;客户端是怎么一步步拿到消息去消费的&#xff1f;我们要从代码层面探究这个问题。 找的流程图&#xff0c;有待考究。 以下我们开始debug&#xff1a; 拉取数据的线程&#xff1a; PullMessageService.java 本…