01- 收入数据集【Pytorch入门实战】

目录

一、机器学习基础

二、实战例子

1.数据集分析

2.实战训练

3.总结

三、参考资料


一、机器学习基础

为了解决这个问题,人们想到数据驱动方法,也就是让计算机从现有的大量的带标签图片电学习规律,一旦计算机学习到了其中的规律,当我们输入一张新的图片给计算机时,它就可以准确的预测出这张图片到底是猫还是狗。

数据驱动方法是一种基于大量数据进行决策、预测和模式识别的方法。

这里有两个关键的因素:

一是大量的可学习数据,比如带标签的猫狗图片,二是学习的主体,我们一般称之为模型。

如何理解模型呢?

你可以把模型认为是一个映射函数,它包含一些参数,这些参数可以与输入进行计算得到一个输出,我们一般称之为预测结果

所谓模型学习的过程,就是模型修正其参数、改进映射关系的过程,可以简单的把模型的学习过程总结如下,以预测图片是猫还是狗为例:

1.创建模型;

2.输入一张带标签的图片;

3.使用模型对此图片做出预测

4.将预测结果与实际标签比较,产生的差距为损失

5.以减小损失为优化目标,根据损失优化模型参数,

6.循环重复上述第2-5步

二、实战例子

学习的例子使用的是“受教育程度与收入数据集”

1.数据集分析

单变量线性回归算法(比如,x代表学历,f(x)代表收入)

f(x)= w*+ b  --->    我们使用f(x)这个函数来映射输入特征和输出值

目标:预测函数f(x)与真实值之间的整体误差最小。

如何定义误差最小呢?

减小误差(直线距离两边的点越近越好【绝对值小,难以计算,使用均方误差代替】)

损失函数:使用均方差作为作为成本函数也就是 预测值和真实值之间差的平方取均值

优化的目标(y代表实际的收入)

找到合适的 w 和 b ,使得(f(x)- y)2越小越好

注意:现在求解的是参数 w和 b

如何优化?

使用梯度下降算法。

2.实战训练

①首先是用到的库

import os    
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'
import torch
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt    #Matplotlib是一个用于数据可视化的Python绘图库。

查看torch版本

torch.__version__

 

②读取数据集,并查看数据集的部分信息。

data = pd.read_csv('datasets/Income1.csv')
data.head()

 

将 data.Education 的值转换为一个二维数组,其中每个元素都是一个单独的列。

data.Education.values.reshape(-1,1)

将一个NumPy数组转换为PyTorch张量,并将其类型设置为FloatTensor。

③得到模型输入与结果

X = torch.from_numpy(data.Education.values.reshape(-1,1)).type(torch.FloatTensor)
Y = torch.from_numpy(data.Income.values.reshape(-1,1)).type(torch.FloatTensor)

查看X、Y的形状:

X.shape,Y.shape

 

④创建模型

from torch import nn     #torch中的高阶模块,包含各种层&损失函数class EIModel(nn.Module):def __init__(self):                   #初始化方法super(EIModel, self).__init__()self.linear = nn.Linear(1, 1)     #输入的特征长度为1,输出的特征长度为1def forward(self, inputs):            #如何应用这些层(前向传播)logits = self.linear(inputs)return logits
#实例化模型model = EIModel()

查看模型结构:一个线性层

⑤损失函数&优化器

loss_fn = nn.MSELoss()    #均方误差损失opt = torch.optim.SGD(model.parameters(), lr=0.0001)    #随机梯度下降

 model.parameters()返回模型的可训练参数【优化的目标】,lr超参数

⑥训练

for epoch in range(1000):for x, y in zip(X, Y):y_pred = model(x)     #x输入得到y_pred输出,在model上调用,输入x,被forward方法的inputs接受。【模型预测】loss = loss_fn(y_pred, y)    #计算损失(input,target)【计算损失】opt.zero_grad()    #设置每次梯度清零【梯度清零】loss.backward()    #计算梯度(下降最快的方向)【损失反向传播】opt.step()    #改变参数,使参数沿着下降最快的方向移动【损失优化参数】

查看模型训练后的参数

model.linear.weight,model.linear.bias   #返回linear层的weight和bias

⑦绘制图像

plt.scatter(data.Education, data.Income)
plt.xlabel('Education')
plt.ylabel('Income')plt.plot(X, model(X).detach().numpy(), 'r')

3.总结

输入数据处理

创建一个合适模型

训练

预测、评价

--->

机器学习:抽象出一条直线,来拟合现有的数据。【映射函数,输入映射输出】

三、参考资料

Pytorch深度学习入门与实战 - 网易云课堂 (163.com)

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

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

相关文章

LLM量化--AWQ论文阅读笔记

写在前面:近来大模型十分火爆,所以最近开启了一波对大模型推理优化论文的阅读,下面是自己的阅读笔记,里面对文章的理解并不全面,只将自己认为比较重要的部分摘了出来,详读的大家可以参看原文 原论文地址&am…

「Python」基于Gunicorn、Flask和Docker的高并发部署

目标预期 使用Gunicorn作为WSGI HTTP服务器,提供高效的Python应用服务。使用Flask作为轻量级Web应用框架,快速开发Web应用。利用Docker容器化技术,确保应用的可移植性和一致性。实现高并发处理,提高应用的响应速度和稳定性。过程 环境准备:安装Docker和Docker Compose。编…

PostgreSQL 中如何处理数据的并发插入和唯一约束的冲突解决?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何处理数据的并发插入和唯一约束的冲突解决一、并发插入和唯一约束的基本概念&#xf…

微服务实战系列之玩转Docker(一)

前言 话说计算机的“小型化”发展,历经了大型机、中型机直至微型机,贯穿了整个20世纪的下半叶。同样,伴随着计算机的各个发展阶段,如何做到“资源共享、资源节约”,也一直是一代又一代计算机人的不懈追求和历史使命。今…

bash: ip: command not found

输入: ip addr 报错: bash: ip: command not found 报错解释: 这个错误表明在Docker容器中尝试执行ip addr命令时,找不到ip命令。这通常意味着iproute2包没有在容器的Linux发行版中安装或者没有正确地设置在容器的环境变量PA…

Git 的基本命令和使用方式

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。以下是 Git 的一些基本命令和使用方式的详细说明: 1. 配置 Git 设置用户名和邮箱:git config --global user.name "你的名字" git config --global u…

Spring Boot请求参数映射:@RequestBody、@RequestParam和@RequestPart的应用

文章目录 引言I @RequestBody(接收请求体中的数据)II @RequestParam(接收任意类型的参数)3.1 接收文件类型参数和普通查询参数3.1 只接收文件参数III @RequestPart(接收文件类型参数)3.1 普通文件上传3.2 上传多个属性名相同的文件3.3 上传一个图片和一个文本域引言 @Reque…

vscode运行命令是报错:标记“”不是此版本中的有效语句分隔符。

vscode运行命令是报错:标记“&&”不是此版本中的有效语句分隔符。 问题解决办法如何高效地使用搜索引擎? 问题 今天试了一下,在vscode的命令行中,执行mkdir test && cd test会报错. 解决办法 在Window中,执行多条命令行,可以: mkdir test ; cd…

C++迈向精通:再看C数组与指针

再看C数组与指针 下面这段代码是合法的&#xff1a; srand(time(0));int arr[10] {0};for (int i 0; i < 10; i) {arr[i] rand() % 100;}for (int i 0; i < 10; i) {cout << i[arr] << endl;}你能明白是为什么嘛&#xff1f;如果不明白&#xff0c;那么…

HTTP背后的故事:理解现代网络如何工作的关键(二)

一.认识请求方法(method) 1.GET方法 请求体中的首行包括&#xff1a;方法&#xff0c;URL&#xff0c;版本号 方法描述的是这次请求&#xff0c;是具体去做什么 GET方法&#xff1a; 1.GET 是最常用的 HTTP 方法. 常用于获取服务器上的某个资源。 2.在浏览器中直接输入 UR…

算法 —— 快速幂

目录 P1045 [NOIP2003 普及组] 麦森数 P1226 【模板】快速幂 原理I 原理II P1226 代码解析 P1045 代码解析 P1045 [NOIP2003 普及组] 麦森数 本题来自洛谷&#xff1a;P1045 [NOIP2003 普及组] 麦森数&#xff0c;根据题意&#xff0c;我们可以看到本题需要计算最少2的1…

C语言程序设计实验8实验报告

1&#xff0e;实验目的 &#xff08;1&#xff09;掌握循环语句 &#xff08;2&#xff09;学习使用递归 &#xff08;3&#xff09;学习使用程序调试 2&#xff0e;实验内容、算法、流程图及主要符号说明 &#xff08;1&#xff09;用辗转相减求最大公约数的递归定义是&a…

ArkTS学习笔记_自定义组件

自定义组件学习笔记 (一)、自定义组件的基本结构 1、struct:自定义组件基于struct实现 格式: struct + 自定义组件名 + {...}简单示例: @Entry @Component struct Index {// 组件的状态 @State message: string = Hello World// 组件的UI构造方法 build() {Row() {C…

python 读取矢量图svg

在Python中读取矢量图&#xff0c;通常指的是读取如SVG&#xff08;可缩放矢量图形&#xff09;或PDF等格式的文件。对于这些格式的处理&#xff0c;Python有几个库可以做到&#xff0c;如matplotlib、cairo、inkscape的Python接口等。以下是使用matplotlib库读取SVG文件的一个…

基于JAVA的智慧社区信息管理系统设计

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

【Android高级UI】PorterDuffMode颜色混合公式

效果展示 色彩混合公式 参数说明 S&#xff0c;源图形D&#xff0c;目标图形A&#xff0c;透明度C&#xff0c;RGB色Saturate&#xff0c;饱和度

js的多线程示例

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>普通worker</title></head><body…

PingRAT:一款基于ICMP的隐蔽型C2流量转发工具

关于PingRAT PingRAT是一款基于ICMP的隐蔽型C2流量转发工具&#xff0c;该工具专为红队成员和攻防演练任务而设计&#xff0c;主要利用了ICMP Payload来实现其功能&#xff0c;该工具不仅能转发C2流量&#xff0c;而且还可以帮助广大研究人员增强C2网络通信流量传输的隐蔽性。…

基于Cpp的OpenCV4.8入门学习笔记(二)

文章目录 前言一、OpenCV图像的一些基本操作&#xff08;day 02&#xff09;16. OpenCV中提供的随机数生成17. 绘制和填充多边形&#xff0c;以五边形为例18. 鼠标事件控制绘画&#xff0c;截取ROI区域19. 图像的像素类型转换与归一化操作20. 图像的放缩与插值21. 图像的翻转&a…

(leecode学习)14. 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例 1&#xff1a; 输入&#xff1a;strs ["flower","flow","flight"] 输出&#xff1a;"fl"示例 2&#xff1a; 输入…