二、线性回归模型

目录

一、线性回归

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 modelArgs:x (ndarray (m,)): Data, m examplesw,b (scalar)    : model parameters  Returnsy (ndarray (m,)): target values"""m = x.shape[0]f_wb = np.zeros(m)for i in range(m):f_wb[i] = w * x[i] + breturn 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 valuesw,b (scalar)    : model parameters  Returnstotal_cost (float): The cost of using w,b as the parameters for linear regressionto fit the data points in x and y"""# number of training examplesm = 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。

三、梯度下降法-CSDN博客文章浏览阅读882次,点赞32次,收藏13次。本文主要介绍了机器学习中的线性回归模型使用梯度下降法寻找最优的w和b,并且对学习率在梯度下降法中的作用做一定示例演示,还对官方的梯度下降法演示lab进行整理归纳讲解,从多维度学习理解梯度下降法在线性回归模型中的应用过程。https://blog.csdn.net/hehe_soft_engineer/article/details/139380896?spm=1001.2014.3001.5501

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

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

相关文章

mysql用户管理知识点

1、权限表 1.1、user表 1.1.1、用户列 Host、User、Password分别表示主机名、用户名、密码 1.1.2、权限列 决定了用户的权限,描述了在全局范围内允许对数据和数据库进行操作。 1.1.3、安全列 安全列有6个字段,其中两个是ssl相关的,2个是x509相…

敦煌网、ebay、速卖通等平台一直被差评怎么办?

在电商行业里一直都有一句话,有评行走天下,无评寸步难行 而没有review打造爆款的案例是少之甚少,众所周知,review已经成为用户衡量一件商品的标尺,目前我也是看到一个文章上面写到,一个卖家表示自己平时运…

形如SyntaxError: EOL while scanning string literal,以红色波浪线形式在Pycharm下出现

背景: 新手在学习Python时可能会出现如下图所示的报错 下面分情况教大家如何解决 视频教程【推荐】: 形如SyntaxError: EOL while scanning string literal,以红色波浪线形式在Pycharm下出现 过程: 问题概述: 简单…

React中使用 ts 后,craco库配置别名时需要注意什么?

文章目录 前言编译报错如下解决方式总结 前言 我们都知道craco库可以用来覆盖react配置,如设置别名等。但是在项目使用 Typescript 后,我们需要额外配置,否则会造成编译报错。 详细craco配置可以查看之前文章: 项目初始化与配置…

探索 LLM 预训练的挑战,GPU 集群架构实战

万卡 GPU 集群实战:探索 LLM 预训练的挑战 一、背景 在过往的文章中,我们详细阐述了LLM预训练的数据集、清洗流程、索引格式,以及微调、推理和RAG技术,并介绍了GPU及万卡集群的构建。然而,LLM预训练的具体细节尚待进一…

Vue06-el与data的两种写法

一、el属性 用来指示vue编译器从什么地方开始解析 vue的语法,可以说是一个占位符。 1-1、写法一 1-2、写法二 当不使用el属性的时候: 两种写法都可以。 v.$mount(#root);写法的好处:比较灵活: 二、data的两种写法 2-1、对象式…

【面试干货】SQL中count(*)、count(1)和count(column)的区别与用法

【面试干货】SQL中count(*)、count(1)和count(column)的区别与用法 1、count(*)2、count(1)3、count(column) 💖The Begin💖点点关注,收藏不迷路💖 在SQL中&a…

CSS函数:fit-content与matrix的使用

网格函数 fit-content()属于网格函数,除此之外的网格函数还有:CSS函数: 实现数据限阈的数字函数。顾名思义,这三个函数只能在网格布局中使用。fit-content()函数主要是用于给定布局可用大小,适应内容,其功…

MySQL事务与MVCC

文章目录 事务和事务的隔离级别1.为什么需要事务2.事务特性1_原子性(atomicity)2_一致性(consistency)3_持久性(durability)4_隔离性(isolation) 3.事务并发引发的问题1_脏读2_不可重…

基于小波域优化Savitzky–Golay滤波器的脑电图信号的运动伪影去除方法(MATLAB R2018A)

在获取或采集数据的过程中,不可避免地将噪声引入到数据中,噪声的存在使得原始数据发生变异,对数据的处理及分析产生严重地影响。常用的去噪模型有平滑去噪、均值去噪。其中,平滑去噪又包括移动平均平滑法和Savitzky-Golay卷积平滑…

一周学会Django5 Python Web开发 - Django5内置Auth认证系统-用户注册实现

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计57条视频,包括:2024版 Django5 Python we…

keil下载及安装(社区版本)

知不足而奋进 望远山而前行 目录 文章目录 前言 Keil有官方版本和社区版本,此文章为社区版本安装,仅供参考。 1.keil MDK 2.keil社区版介绍 3.keil下载 (1)打开进入登录界面 (2)点击下载,跳转到信息页面 (3)填写个人信息,点击提交 (4)点击下载…

韩国Neowine推出第三代强加密芯片ALPU-CV

推出第三代加密芯片;是ALPU系列中的高端IC;是一款高性能车规级加密芯片;其加密性更强、低耗电、体积小;使得防复制、防抄袭板子的加密性能大大提升,该芯片通过《AEC-Q100》认证,目前已经在国产前装车辆配件…

VMware Workstation虚拟机安装 CentOS 7.9 后ping ip地址出现错误:Network is unreachable

VMware Workstation虚拟机安装 CentOS 7.9 后ping ip地址出现错误:Network is unreachable 解决步骤: 进入目录 进入/etc/sysconfig/network-scripts/, cd /etc/sysconfig/network-scripts/修改文件 vi ifcfg-ens33变更项 ONBOOTyes保存…

算法学习笔记(7.6)-贪心算法(霍夫曼编码)

目录 1.什么是霍夫曼树 2.霍夫曼树的构造过程 3.霍夫曼编码 3.1具体的作用-频率统计 ##实战题目 1.什么是霍夫曼树 给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也…

ast.js是什么?

在devtools分析网站时,出现了ast.js的页面。那么,什么是ast.js?它有什么用? 经查询,AST是抽象语法树(Abstract Syntax Tree)也称为AST语法树,指的是源代码语法所对应的树状结构。也就是说&…

vue3+uniapp

1.页面滚动 2.图片懒加载 3.安全区域 4.返回顶部,刷新页面 5.grid布局 place-self: center; 6.模糊效果 7.缩放 8.微信小程序联系客服 9.拨打电话 10.穿透 11.盒子宽度 12.一般文字以及盒子阴影 13.选中文字 14.顶部安全距离 15.onLoad周期函数在setup语法糖执行后…

基于GTX 8B10B编码的自定义PHY上板测试(高速收发器十四)

前文整理了GTX IP,完成了自定义PHY协议的收发模块设计,本文将通过光纤回环,对这些模块上板测试,首先需要编写一个用于生成测试数据的用户模块。 1、测试数据生成模块 本模块用于生成自定义PHY协议的测试数据,通过axi_…

期望18K,4年前端Cvte 视源股份一面挂

一面 1、自我介绍?毕业的时候一直在 xx 公司,你基本都在做什么项目? 2、你讲一下你主要负责哪一块的?balabala 3、你们的 json 是怎么定义组件间的联动的? 4、怎么确定区分两个 input? 5、你们是怎么触…