二、线性回归模型

目录

一、线性回归

1.模型示例

2.代码实验(C1_W1_Lab03_Model_Representation)

(1).工具使用

(2).问题描述-房价预测

(3).输入数据

(4).绘制数据集坐标点

(5).建模构造函数

二、代价函数(Cost function)

1.解释一下概念

2.衡量一条直线与训练数据的拟合程度

3.代价函数实验(C1_W1_Lab04_Cost_function_Soln)

(1)引入工具包

(2)输入训练数据

(3)定义计算代价的代价函数

(4)绘制代价函数图

(5)总结


在本实验中,你将了解线性回归模型如何在代码中定义,并通过图表观察模型对给定w和b值的数据拟合程度。此外,你还可以尝试不同的w和b值,以检验是否能提升数据拟合效果。

一、线性回归

1.模型示例

首先要有一些数据来训练我们的线性回归函数。

数据集:根据下面的数据集,经过一定的学习算法得到线性回归函数

2.代码实验(C1_W1_Lab03_Model_Representation)

(1).工具使用

numpy:用于科学计算的库

matplotlib:绘制图像的库

//引入工具
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('./deeplearning.mplstyle')

(2).问题描述-房价预测

这个实验将使用一个只有两个数据点的简单数据集——1000平方英尺的房子以30万美元的价格出售,2000平方英尺的房子以50万美元的价格出售。这两点将构成我们的数据集或训练集。在这个实验里,尺寸的单位是1000平方英尺,价格的单位是1000美元。

(3).输入数据

# x_train is the input variable (size in 1000 square feet)
# y_train is the target (price in 1000s of dollars)
x_train = np.array([1.0, 2.0])
y_train = np.array([300.0, 500.0])
print(f"x_train = {x_train}")
print(f"y_train = {y_train}")

用 m 表示训练样本的数量。Numpy数组有一个 .shape 参数。x_train.shape返回一个python元组,每个元组对应一个维度。x_train.shape[0]是数组的长度和示例的数量,如下代码:

# m is the number of training examples
print(f"x_train.shape: {x_train.shape}")
m = x_train.shape[0]
print(f"Number of training examples is: {m}")

(4).绘制数据集坐标点

# Plot the data points
plt.scatter(x_train, y_train, marker='x', c='r')
# Set the title
plt.title("Housing Prices")
# Set the y-axis label
plt.ylabel('Price (in 1000s of dollars)')
# Set the x-axis label
plt.xlabel('Size (1000 sqft)')
plt.show()

(5).建模构造函数

由问题描述可知该数据集应该是线性模型,f(x)=wx+b

不断的调整w、b,将x代入上式中,判断f(x)是否匹配数据集的y:

//批量计算在当前w、b下f(x)的值
def compute_model_output(x, w, b):
    """
    Computes the prediction of a linear model
    Args:
      x (ndarray (m,)): Data, m examples
      w,b (scalar)    : model parameters  
    Returns
      y (ndarray (m,)): target values
    """
    m = x.shape[0]
    f_wb = np.zeros(m)
    for i in range(m):
        f_wb[i] = w * x[i] + b
        
    return f_wb

可以通过画图的方式直观比较:

tmp_f_wb = compute_model_output(x_train, w, b,)
# Plot our model prediction
plt.plot(x_train, tmp_f_wb, c='b',label='Our Prediction')
# Plot the data points
plt.scatter(x_train, y_train, marker='x', c='r',label='Actual Values')
# Set the title
plt.title("Housing Prices")
# Set the y-axis label
plt.ylabel('Price (in 1000s of dollars)')
# Set the x-axis label
plt.xlabel('Size (1000 sqft)')
plt.legend()
plt.show()

下图是当w=200,b=100时的图像

两个数据点均在f(x)=200x+100这条直线上,可以以此来对 新的x 做出预测:

w = 200                         
b = 100    
x_i = 1.2
cost_1200sqft = w * x_i + b    
print(f"${cost_1200sqft:.0f} thousand dollars”)
//输出结果:$340 thousand dollars

二、代价函数(Cost function)

1.解释一下概念

    在机器学习特别是监督学习中,代价函数(Cost Function)是一个关键的概念。它衡量了模型预测结果与实际标签之间的差异或误差。目标是通过优化代价函数来找到最佳的模型参数。

    常见的代价函数有:(这里只是先举出例子了解一下,具体应用后面再说)

        (1). 均方误差(Mean Squared Error, MSE):适用于回归问题,计算每个样本预测值和真实值之差的平方的平均。

        (2). 交叉熵损失(Cross-Entropy Loss, CEL):用于分类问题,特别是多类别的softmax分类。它衡量了模型预测的概率分布与实际标签概率分布之间的差异。

        (3). Huber 损失(Huber Loss):介于均方误差和绝对值误差之间,对于异常值更加鲁棒。

    在优化过程中,我们会不断地调整模型参数来减小代价函数的值。通过最小化代价函数,我们期望找到一个能够在新数据上表现良好的模型。

2.衡量一条直线与训练数据的拟合程度

使用均方误差成本函数

(1)先对简化版本的代价函数(b=0)进行分析:

对于不同的w(斜率)有不同的J(w),选择最小的J(w)时的w即为最优的线性回归模型参数,图示如下

因此,构造线性回归模型的问题就变成了寻找让误差最小的w和b参数

(2)当扩展到一般的回归模型,cost function的图像变成了一个曲面( 三维坐标:w、b、J(w,b) )

我们同样可以通过数学方法在曲面上找到使代价值J(w,b)最小的参数w和b

往往3D的曲面图会用2D的等高线图来等价表示,用于研究规律:

对于不同w、b时,f(x)和J(w,b)的图像对应情况:

3.代价函数实验(C1_W1_Lab04_Cost_function_Soln)

(1)引入工具包

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')

发现出现缺少依赖包的情况:

pip install ipympl

重启内核继续执行引入工具包的操作

(2)输入训练数据

x_train = np.array([1.0, 2.0])           #(size in 1000 square feet)
y_train = np.array([300.0, 500.0])           #(price in 1000s of dollars)

(3)定义计算代价的代价函数

def compute_cost(x, y, w, b): 
    """
    Computes the cost function for linear regression.
    
    Args:
      x (ndarray (m,)): Data, m examples 
      y (ndarray (m,)): target values
      w,b (scalar)    : model parameters  
    
    Returns
        total_cost (float): The cost of using w,b as the parameters for linear regression
               to fit the data points in x and y
    """
    # number of training examples
    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

(4)绘制代价函数图

①由数据可知,拟合最好的回归模型b=100,这里先看一下固定b=100时,w变化时,J(w)的变化情况

//绘制w-J(w)变化图,函数具体原码看代码包:当前课程资源:week1/work/lab_utils_uni.py
plt_intuition(x_train,y_train)

如果绘图时遇到这个问题:Failed to load model class 'VBoxModel' from module '@jupyter-widgets/controls’

需要安装 widgets 依赖:

pip install ipywidgets

如果还是不好使可能是版本问题,将依赖组件升级一下

pip install -U jupyterlab ipywidgets jupyterlab_widgets

w=130时的误差:6125

w=200时,误差为0

//绘图-三维图
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和b

所以我们使用3D的图来显示w、b、J(w,b)之间的关系:

//数据集
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,])

//绘图
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)

(5)总结

成本函数对损失进行平方,这一事实确保了“误差曲面”是凸的,就像一个汤碗。它总是有一个可以通过在所有维度上遵循梯度达到的最小值。

下一章将开始学习梯度下降法,可以解决寻找使J(w,b)最小的w和b。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

上架 Google Play 的那些辛酸泪

一、注册 Google 账号 首先你要有个账号,地址如下: accounts.google.com/signup/v2/w… 按照 Google 爸爸要求,该填写的都填了,随后点击下一步。 验证手机号: 输入验证码验证当前手机号: 其他信息填写&a…

废品回收小程序怎么做?有哪些核心功能?

废品回收行业正逐步走向高质量发展的道路。在国家政策的推动下,再生资源市场需求旺盛,行业内部竞争格局逐渐明朗。 随着互联网技术的发展,"互联网回收"成为废品回收行业的一个新趋势。通过微信小程序这种线上平台,用户…

Linux--EXT2文件系统

参考资料: linux之EXT2文件系统--理解block/block group/索引结点inode/索引位图_一个块组中索引节点表和数据块区最多占用字节-CSDN博客 linux环境: Linux version 5.15.146.1-microsoft-standard-WSL2 (root65c757a075e2) (gcc (GCC) 11.2.0, GNU ld…

Wpf 使用 Prism 实战开发Day30

登录界面设计 一.准备登录界面图片素材(透明背景图片) 1.把准备好的图片放在Images 文件夹下面,格式分别是.png和.ico 2.选中 login.png图片鼠标右键,选择属性。生成的操作选择>资源 3.MyTodo 应用程序右键,属性&a…

音量的对数表示与浮点数表示

音量用浮点数(float)和对数(logarithmic scale)表示各有特点和应用场景 浮点数:直接使用线性刻度表示音量,例如在0.0(最小音量)到1.0(最大音量)的范围内。对…

YZW900规格书

title: “深圳市沃进科技有限公司” 深圳市沃进科技有限公司 TOP视图 特性 异地组网,远程访问有线/无线备份单模双卡备份5G转有线,5G转WIFI2.4G5.8G双频WIFI三网口,WAN/LAN可切换软硬件看门狗智能防掉线云平台、客户端远程管理安装支架安装铝…

MyBatis延迟加载缓存分页逆向工程

文章目录 延迟加载概述步骤 缓存一级缓存介绍原理 二级缓存介绍 设置缓存对象策略原理开启步骤属性解释是否使用一级缓存 分页插件使用步骤 逆向工程介绍搭建使用增删修改查 延迟加载 概述 延迟加载本身是依赖于多表查询的 延迟加载中返回值要选择resultMap返回的结果一定是D…

【QEMU 中文文档】0. Hello QEMU!

最近,我开始研究QEMU这个超强的虚拟化和仿真工具。不得不说,读英文文档真是让我头大 🥴。于是我灵机一动,为什么不做个QEMU的中文文档呢?毕竟,现在有了ChatGPT的强大翻译能力,我决定尝试一下&am…

分形之科赫雪花

前言 分形是一种具有自相似性的几何图形或数学对象。它的特点是无论在任何放大或缩小的尺度下,都能够看到与整体相似的图形。分形的形状可以非常复杂,常常具有分支、重复的图案,以及细节层次丰富的结构。 分形在自然界中广泛存在,如云朵、树枝、山脉、海岸线等,它们都展…

铁塔基站用能监控能效解决方案

截至2023年10月,我国5G基站总数达321.5万个,占全国通信基站总数的28.1%。然而,随着5G基站数量的快速增长,基站的能耗问题也逐渐日益凸显,基站的用电给运营商带来了巨大的电费开支压力,降低5G基站的能耗成为…

一图了解【电子面拦截】接口

【电子面拦截】又可以成为快递拦截 商品还在运输途中,买家申请仅退款、想修改地址怎么办? 百递云API开放平台最新推出「电子面单拦截」接口,提供三种拦截类型,助力快速拦截处理在途包裹。 下图带您了解👇

Leecode---栈---每日温度 / 最小栈及栈和队列的相互实现

栈:先入后出;队列:先入先出 一、每日温度 Leecode—739题目: 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温…

2.6 Docker部署多个前端项目

2.6 Docker部署多个项目 三. 部署前端项目 1.将前端项目打包到同一目录下(tcm-ui) 2. 部署nginx容器 docker run --namenginx -p 9090:9090 -p 9091:9091 -d nginx3. 复制nginx.conf文件到主机目录 docker cp nginx:/etc/nginx/nginx.conf /root/ja…

大模型之路,从菜鸟到模型大师只需要一步

前言: 在这个数据爆炸的时代,大模型技术正以前所未有的速度发展。从自然语言处理到计算机视觉,从智能推荐到自动驾驶,大模型正逐渐渗透到我们生活的方方面面。那么,如何从菜鸟成长为模型大师呢?本文将为你…

【JMeter接口自动化】第8讲 Fiddler抓包Jmeter

1)配置好Fiddler 设置Fiddler-Tools-Options-HTTPS 设置Fiddler-Tools-Options-Connections,设置端口为8888 2)查看IP 在CMD中输入ipconfig 查看IP地址 3)配置Jmeter Http请求——基本,设置Http请求,使用…

英语学习笔记30——What must I do?

What must I do? 我应该做点啥? 词汇 Vocabulary empty v. 倒空,变空 a. 空的 搭配:empty bottle 空瓶子    empty room 空屋子 例句:教室里空无一人。    The classroom is empty.    我有一个空瓶子。    I have…

智能家居元宇宙三维互动展示在线创作平台

卫浴行业正迎来一场全新的革命——卫浴元宇宙3D展厅搭建编辑器。它基于互联网信息技术、3D线上展示与VR虚拟现实技术,为您打造一个沉浸式的3D虚拟空间,让您的卫浴产品在线上展示中焕发出前所未有的光彩。 在这个卫浴元宇宙中,您可以随心所欲地…

大模型时代的具身智能系列专题(六)

UCSD 王小龙组 王小龙是UCSD电子与计算机工程系的助理教授。他曾在加州大学伯克利分校与Alexei Efros和Trevor Darrell一起担任博士后研究员,在CMU RI获得了机器人学博士学位,师从Abhinav Gupta。他的研究重点是通过视频和物理机器人交互数据来学习3D和…

vulnhub靶场之FunBox-9

一.环境搭建 1.靶场描述 Its a box for beginners, but not easy. Gather careful !!! Hint: Dont waste your time ! Every BruteForce-Attack at all ports can be stopped after 1500 trys per account. Enjoy the game and WYSIWYG ! This works better with VirtualBox…

数据在内存中的存储<C语言>

导言 在计算机中不同类型的数据在计算机内部存储形式各不相同,弄懂各种数据在计算机内部存储形式是有必要的,C语言的学习不能浮于表面,更要锻炼我们的“内功”,将来在写程序的时候遇见各种稀奇古怪的bug时,也便能迎刃而…