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

引言

在机器学习中,代价函数(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.mzph.cn/web/49068.shtml

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

相关文章

数据结构——排序大汇总(建议收藏)

这篇文章将为大家详细讲解各大排序的基本思想与实现代码~ 内有动图 首先,我们来看常见的排序有以下几大类: 1.插入排序 插入排序的主要思想是将每个位置的元素插入到前面已具备顺序的数组中 实际中我们玩扑克牌时,就用了插入排序的思想 …

快手可灵视频生成大模型全方位测评

快手视频生成大模型“可灵”(Kling),是全球首个真正用户可用的视频生成大模型,自面世以来,凭借其无与伦比的视频生成效果,在全球范围内赢得了用户的热烈追捧与高度评价。截至目前,申请体验其内测…

人工智能:大语言模型提示注入攻击安全风险分析报告下载

大语言模型提示注入攻击安全风险分析报告下载 今天分享的是人工智能AI研究报告:《大语言模型提示注入攻击安全风险分析报告》。(报告出品方:大数据协同安全技术国家工程研究中心安全大脑国家新一代人工智能开放创新平台) 研究报告…

stats 监控 macOS 系统

Stats 监控 macOS 系统 CPU 利用率GPU 利用率内存使用情况磁盘利用率网络使用情况电池电量 brew install stats参考 stats github

59、mysql存储过程

存储过程 一、存储过程: 1.1、存储过程的概念 概念:完成特定功能的sql语句的集合。把定义好的sql集合在一个特定的sql的函数当中 每次执行调用函数即可。还可以实现传参的调用。 1.2、存储过程的语法: delimiter $$ ##delimiter开始和结…

支持4K高分辨率,PixArt-Sigma最新文生图落地经验

PixArt-Sigma是由华为诺亚方舟实验室、大连理工大学和香港大学的研究人员共同开发的一个先进的文本到图像(Text-to-Image,T2I)生成模型。 PixArt-Sigma是在PixArt-alpha的基础上进一步改进的模型,旨在生成高质量的4K分辨率图像。…

2024牛客暑期多校第四场

A-LCT 带权并查集&#xff0c;维护一下每个点在当前树的深度和以它为根能找到的最深的深度。‘ #include<bits/stdc.h>using namespace std; typedef long long ll; const int N 1e6 100;int fa[N],ans[N],val[N];int find(int x){if(fa[x]x)return x;int tfa[x];fa[x…

C++初学(3)

面向对象编程&#xff08;OOP&#xff09;的本质是设计并拓展自己的数据类型&#xff0c;设计自己的数据类型就是让类型与数据匹配。内置的C类型分为两组&#xff1a;基本类型和复合类型。这里我们将介绍基本类型的整数和浮点数 3.1、简单变量 3.1.1、变量名 C必须遵循几种简…

场外期权如何报价?名义本金是什么?

今天带你了解场外期权如何报价&#xff1f;名义本金是什么&#xff1f;投资者首先需要挑选自己想要进行期权交易的沪深上市公司股票。选出股票后&#xff0c;需要将股票信息、预期的操作时间&#xff08;如期限&#xff09;、看涨或看跌的选择以及预计的交易金额等信息报给场外…

计算机网络(四)数字签名和CA认证

什么是数字签名和CA认证&#xff1f; 数字签名 数字签名的过程通常涉及以下几个步骤&#xff1a; 信息哈希&#xff1a;首先&#xff0c;发送方使用一个哈希函数&#xff08;如SHA-256&#xff09;对要发送的信息&#xff08;如电子邮件、文件等&#xff09;生成一个固定长度…

全链路追踪 性能监控,GO 应用可观测全面升级

作者&#xff1a;古琦 01 介绍 随着 Kubernetes 和容器化技术的普及&#xff0c;Go 语言不仅在云原生基础组件领域广泛应用&#xff0c;也在各类业务场景中占据了重要地位。如今&#xff0c;越来越多的新兴业务选择 Golang 作为首选编程语言。得益于丰富的 RPC 框架&#xff…

Golang实现Word模板内容填充导出

这里我们使用一个广泛使用且免费处理 .docx 文件的库&#xff0c;github.com/nguyenthenguyen/docx. 安装 github.com/nguyenthenguyen/docx 库 首先&#xff0c;确保你已经安装了 docx 库&#xff1a; go get github.com/nguyenthenguyen/docx使用 docx 库处理 Word 模板 …

ubuntu实践

目录 扩容 本机上ping不通新建立的虚拟机 ssh连接 装sshd ssh客户端版本较低&#xff0c;会报key exchange算法不匹配问题 ubuntun上装docker 将centos7下的安装包改造成适配 ubuntu的包 参考文章 扩容 Hyper-V 管理器安装的ubutun扩容磁盘空间说明_hype-v磁盘扩容-…

复现open-mmlab的mmsegmentation详细细节

复现open-mmlab的mmsegmentation详细细节 1.配置环境2.数据处理3.训练 1.配置环境 stage1&#xff1a;创建python环境 conda create --name openmmlab python3.8 -y conda activate openmmlabstage2&#xff1a;安装pytorch&#xff08;这里我是以torch1.10.0为例&#xff09…

VINS-Fusion 回环检测pose_graph_node

VINS-Fusion回环检测,在节点pose_graph_node中启动。 pose_graph_node总体流程如下: 重点看process线程。 process线程中,将订阅的图像、点云、位姿时间戳对齐,对齐后分别存入image_msg、point_msg、pose_msg。pose_msg为VIO后端优化发布的位姿。 一、创建关键帧keyFram…

mac|安装PostgreSQL

1、官网下载&#xff1a;EDB: Open-Source, Enterprise Postgres Database Management 选择需要的版本&#xff1a; 双击得到的.dmg文件 双击&#xff0c;弹窗选择打开&#xff0c;一路next&#xff0c;然后输入你要设置的密码&#xff0c;默认账号名字为&#xff1a;postgres…

项目一缓存商品

文章目录 概要整体架构流程技术细节小结 概要 因为商品是经常被浏览的,所以数据库的访问量就问大大增加,造成负载过大影响性能,所以我们需要把商品缓存到redis当中,因为redis是存在内存中的,所以效率会比MySQL的快. 整体架构流程 技术细节 我们在缓存时需要保持数据的一致性所…

面试场景题系列--(2)短 URL 生成器设计:百亿短 URL 怎样做到无冲突?--xunznux

文章目录 面试场景题&#xff1a;短 URL 生成器设计&#xff1a;百亿短 URL 怎样做到无冲突&#xff1f;1. 需求分析2. 短链接生成算法2.1 自增法2.2 散列函数法2.3 预生成法 3. 部署模型3.1 其他部署方案 4. 设计4.1 重定向响应码4.2 短 URL 预生成文件及预加载4.3 用户自定义…

个人百度百科怎么创建?

百度百科词条分为企业词条、品牌词条、人物词条等&#xff0c;个人百度百科创建的需求量很大&#xff0c;各式各样的人物需求都有。现在凡是要推广个人的人&#xff0c;创建百度百科都是其中一个必要的步骤。 作为一个有知名度的人物&#xff0c;拥有一个百度百科从侧面也证明了…

基于微信小程序+SpringBoot+Vue的自习室选座与门禁系统(带1w+文档)

基于微信小程序SpringBootVue的自习室选座与门禁系统(带1w文档) 基于微信小程序SpringBootVue的自习室选座与门禁系统(带1w文档) 本课题研究的研学自习室选座与门禁系统让用户在小程序端查看座位&#xff0c;预定座位&#xff0c;支付座位价格&#xff0c;该系统让用户预定座位…