Linear Regression 线性回归

深度学习:

  1. 数据集
  2. 模型选择
  3. 训练(KNN不需要)
  4. 推理(预测)

假设学生用x小时学习深度学习,能够得要y分数:
在这里插入图片描述
那么学习4小时,能够得到多少分?
在这里插入图片描述
用已知数据作为训练集:
在这里插入图片描述
选取线性模型作为模型进行预测,线性模型是最简单的模型:𝑦=𝑥∗𝜔+𝑏,我们需要求:𝜔、𝑏
在这里插入图片描述
在本次案例中,为了简化模型,使𝑦=𝑥∗𝜔:
在这里插入图片描述
最开始𝜔是选取一个随机值,然后通过训练想要找到一个𝜔的取值使得生成的预测函数与真实值的差异尽可能小,即损失尽可能小。

在这里插入图片描述
我们采用损失函数来衡量真实值与预测值之间的差异,目标就是:找到一个𝜔使得损失函数的值最小。
采用真实值与预测值的平方作为损失函数(loss):
假设𝜔=3、4、0…,计算出每个样本的损失,之后求平均损失。目标就是找到一个𝜔使得这个平均损失最小:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

当𝜔=0时,平均误差为0,这是理想状态下最好的取值。是训练的理想目标!

注意:训练损失loss:是针对具体某一个样本的;将整个训练集的损失函数求平均(MSE)是最常用的损失函数cost之一:

在这里插入图片描述
在这里插入图片描述
怎样才能找到最小的损失值呢?
假设损失值和w的关系如下图所示,我们可以采用穷举法将所有w取值的损失值都计算出来,就可以得到损失值的最小值是在w=3时取得的。
在这里插入图片描述

plt.plot()

plt.plot() 是Matplotlib库中用于==绘制线图(折线图)==的主要函数之一。
它的作用是将一组数据点连接起来,以可视化数据的趋势、关系或模式。以下是 plt.plot() 的详细介绍:

plt.plot(x, y, fmt, **kwargs)

x:表示X轴上的数据点,通常是一个列表、数组或一维序列,用于指定数据点的水平位置。
y:表示Y轴上的数据点,通常也是一个列表、数组或一维序列,用于指定数据点的垂直位置。
fmt:是一个可选的格式字符串,用于指定线条的样式、标记和颜色。例如,‘ro-’ 表示红色圆点线条。
**kwargs:是一系列可选参数,用于进一步自定义线条的属性,如线宽、标记大小、标签等。

以下是一些常用参数和用法:

样式参数(fmt): 格式字符串可以包含一个字符来指定颜色,一个字符来指定标记样式,以及一个字符来指定线条样式。例如,‘r-’ 表示红色实线,‘bo–’ 表示蓝色圆点虚线。线条样式(linestyle): 使用linestyle参数可以指定线条的样式,如实线(‘-’)、虚线(‘–’)、点划线(‘-.’)等。标记样式(marker): 使用marker参数可以指定数据点的标记样式,如圆点(‘o’)、方块(‘s’)、星号(‘*’)等。线条颜色(color): 使用color参数可以指定线条的颜色,可以使用颜色名称(如’red’)、缩写(如’r’)或十六进制颜色码(如’#FF5733’)。线宽(linewidth): 使用linewidth参数可以指定线条的宽度,以数字表示。标记大小(markersize): 使用markersize参数可以指定标记的大小,以数字表示。图例标签(label): 使用label参数可以为线条指定标签,用于创建图例。其他属性: 还有许多其他属性可用于自定义线图,如透明度、渐变、线型、阴影等。

plt.plot() 不仅可以绘制简单的线图,还可以用于绘制多条线,添加图例、标签、标题,设置坐标轴范围和刻度等。它是Matplotlib中最常用的绘图函数之一,适用于可视化数据集的趋势和关系。

import matplotlib.pyplot as plt
#显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 示例数据x = [1, 2, 3, 4, 5]
y = [10, 15, 13, 18, 16]# 绘制线图,并自定义外观
plt.plot(x,                         # X轴数据y,                         # Y轴数据marker='o',                # 标记样式:圆点linestyle='-',             # 线条样式:实线color='green',              # 线条颜色:蓝色linewidth=2,               # 线宽:2markersize=10,              # 标记大小:8label='数据1'               # 图例标签
)# 添加标签和标题
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')
plt.title('标题')# 添加图例
plt.legend()# 显示网格线
plt.grid(True)# 自定义刻度
plt.xticks([1, 2, 3, 4, 5], ['一', '二', '三', '四', '五'])# 显示图表
plt.show()

参考博客

代码

import numpy as np
import matplotlib.pyplot as plt
#plt是常用的绘制图像的库
#训练集数据
x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]#定义线性模型y=wx
def forward(x):return x * w#定义损失函数:𝑙𝑜𝑠𝑠=(y_predect−𝑦)2=(𝑥∗𝜔−𝑦)2
def loss(x, y):y_pred = forward(x)return (y_pred - y) ** 2# #定义w_list、mse_list来保存w和对应mes loss的取值
w_list = []
mse_list = []#穷举法计算损失值cost
for w in np.arange(0.0, 4.1, 0.1):print("w=", w)l_sum = 0for x_val, y_val in zip(x_data, y_data):#x,y拼接为[x,y]y_pred_val = forward(x_val)#预测loss_val = loss(x_val, y_val)#求损失Lossl_sum += loss_val#Loss求和print('\t', x_val, y_val, y_pred_val, loss_val)print('MSE=', l_sum / 3)#计算msew_list.append(w)mse_list.append(l_sum / 3)#画图
plt.plot(w_list, mse_list)
plt.ylabel('Loss')
plt.xlabel('w')
plt.show()

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

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

相关文章

MySQL8.0主从复制实现及遇到的个人问题

文章目录 1、准备两个服务器或者虚拟机2、主库配置3、从库配置4、配置过程中使用到的命令5、遇到的问题 1、准备两个服务器或者虚拟机 这里使用的VM虚拟机的Centos、MySQL版本是8.0.26、使用FinalShell进行远程操作。 2、主库配置 修改MySQL配置文件(/etc/my.cnf) #启用二进…

ROS学习记录:在ROS中用C++实现激光雷达避障

前言 本文建立在成功获取激光雷达数据的基础上&#xff0c;详细参考 在ROS中用C实现获取激光雷达的数据 一、实现思路 二、在VScode中打开之前编写好的lidar_node.cpp 三、在lidar_node.cpp中写入如下代码 #include <ros/ros.h> #include <std_msgs/String.h> …

thinkadmin安装步骤

一,先cmd运行安装命令 ### 创建项目&#xff08; 需要在英文目录下面执行 &#xff09; composer create-project zoujingli/thinkadmin二,在confing中的database.php配置数据库 三,将仓库的data复制到app目录下 https://gitee.com/zoujingli/think-plugs-data 四,在cmd运…

MySQL 8.0 开关 Redo Logging

一 前言 前几天有客户测试使用云数据库的时候提出 要禁止mydumper 关闭redo log的操作 (说白了就是导入数据时保持MySQL 实例的redo logging功能)&#xff0c; 这才想起 在 MySQL 8.0.21 版本中&#xff0c;开启了一个新特性 “Redo Logging 动态开关”。 在新实例导数据的场…

Sectigo泛域名https证书有什么用

Sectigo旗下有泛域名https证书实现了同时为多个域名网站提供安全加密服务&#xff0c;虽然将域名网站的类型限制在了域名以及域名旗下的二级子域名中。Sectigo旗下的泛域名https证书分为DV基础型和OV企业型&#xff0c;提高了https证书对各个场景的适配。今天就随SSL盾小编了解…

迅为RK3588开发板使用 FFMpeg 进行推流

Debian/Ubuntu 系统使用以下命令安装 FFMpeg &#xff0c;如下图所示&#xff1a; apt-get install ffmpeg 使用 ifconfig 查看开发板 ip 为 192.168.1.245 如下图所示&#xff1a; 使用 FFMpeg 推流一个 mp4 视频进行测试&#xff0c;作者将测试视频 test.mp4 放在了根目录下…

如何开通ChatGPT Plus:支付宝充值方法|apple store购买ChatGPT4|支付宝充值apple ID

充值方式一般有两种一种是虚拟卡&#xff0c;还有就是使用礼品卡&#xff0c;我个人 比较喜欢使用虚拟卡&#xff0c;因为有朋友使用礼品卡封号了什么也没有 但是你用虚拟卡&#xff0c;就算封号你的钱会退回到卡里面&#xff0c;这样的话自己在注册一个账号就好了&#xff0c…

并发编程下的集合:数组寻址、LinkedList、HashMap、ConcurrentHashMap

数组如何寻址 a[n]起始地址(n*字节数) 译&#xff1a;a[2]100(2*4) 2为下标、4为int类型字段占四个字节 LinkedList LinkedList为双向链表结构&#xff0c;链表结构又分为单向、双向、以及循环。 // 双向链表 private static class Node<E> {E item;Node<E> nex…

鸿蒙系列--装饰器

一、基础UI组件结构 每个UI组件需要定义为Component struct对象&#xff0c;其内部必须包含一个且只能包含一个build(){}函数&#xff0c;用于绘制UI&#xff1b;struct之内、build()函数之外的地方用于存放数据。 二、基本UI装饰器 Entry 装饰struct&#xff0c;页面的入口…

.cer格式证书文件和 .pfx格式证书文件有什么区别?

这里我们将讨论.cer和.pfx文件类型之间的差异。 什么是数字证书&#xff1f; 数字证书在电子通信中用作验证身份的密码机制。我们需要这些证书来建立安全的在线通信渠道&#xff0c;并确保数字数据的隐私、真实性和正确性。 数字证书包括主题&#xff08;实体详细信息&#xf…

MyBatis学习二:Mapper代理开发、配置文件完成增删改查、注解开发

前言 公司要求没办法&#xff0c;前端也要了解一下后端知识&#xff0c;这里记录一下自己的学习 学习教程&#xff1a;黑马mybatis教程全套视频教程&#xff0c;2天Mybatis框架从入门到精通 文档&#xff1a; https://mybatis.net.cn/index.html Mapper代理开发 目的 解决…

sql:定时执行存储过程(嵌套存储过程、使用游标)

BEGINDeclare FormNo nvarchar(20) --单号Declare Type nvarchar(50) --类型Declare PickedQty float -Declare OutQty float Declare 生产量 floatDeclare 已装箱数量 float Declare 已入库数量 floatDeclare 损耗数量 float Declare 退货品出库数量 intdeclare k c…