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…

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…

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

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

算法 —— 快速幂

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

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

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

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

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

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

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

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

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

SWDIO管脚作为GPIO

下面是使用FRDM-K32L2B3开发板和SDK中的frdmk32l2b_gpio_led_output程序做了一些测试,configure SWDIO pin as GPIO pin的流程。 查看手册,找到SWDIO对应的管脚,可以看到PTA3对应的SWDIO管脚。 2.修改Demo程序,在程序中设置SWDIO…

【杰理蓝牙开发】AC632 开发板烧录实例

AC632 开发板烧录实例 0. 个人简介 && 授权须知1. 硬件板卡介绍2. 代码烧录2.1 使用USB接口烧录2.2 使用串口烧录 3. 为什么要用烧录器供电? 0. 个人简介 && 授权须知 📋 个人简介 💖 作者简介:大家好&#xff0c…

代码随想录训练营第三十六天 1049最后一块石头的重量II 494目标和

第一题: 原题链接:1049. 最后一块石头的重量 II - 力扣(LeetCode) 思路: 首先确认这是一道01背包问题的题目,如何转换:剩下尽可能小的重量,如何剩下呢?跟分割等和子集很…

论文略读:LoRA Learns Less and Forgets Less

202405 arxiv 1 主要思想 LORA相比于全参数训练,学的少,但忘的也少 2 实验分析 2.1 训练的表现 在编程和数学任务中,LoRA相比全参数微调表现出明显的劣势 2.2 遗忘的表现 这边的遗忘,是指在数据集A上预训练,然后在…

18.x86游戏实战-找角色人物名字

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

Linux编程乐趣《简单、有趣、好玩的Linux命令》

文章目录 一、黑客帝国(cmatrix)1.1 centOS 手动安装:1.2 . 运行1.3 . 效果 二、cal命令三、htop四、sl:蒸汽火车五、cowsay:会说话的小牛六、boxes七、pv 一、黑客帝国(cmatrix) 1.1 centOS 手动安装: #…

【数学建模与优化】:解析与实践

目录 数学建模概述 1. 什么是数学模型 2. 数学模型的分类 2.1 按应用领域分类 2.2 按建模方法分类 2.3 按是否考虑随机因素分类 2.4 按变量的连续性分类 2.5 按对对象内部规律了解程度分类 2.6 按变量的基本关系分类 2.7 按是否考虑时间变化分类 3. 数学规划及优化模…

易语言数据类型和插入数据类型-cnblog

易语言数据类型 基本数据类型 基本数据类型有6种:数值型、逻辑型、日期时间型、文本型、字节集型(字节型组合)、子程序指针型。数值型:0到9加. 数值型又包括:字节型、短整数型、整数型、长整数型、小数型、双精度小数型。 2.特殊数据 易语言特殊数据类型是指基本数据类型之外的…

【嵌入式Linux】<总览> 网络编程(更新中)

文章目录 前言 一、网络知识概述 1. 网路结构分层 2. socket 3. IP地址 4. 端口号 5. 字节序 二、网络编程常用API 1. socket函数 2. bind函数 3. listen函数 4. accept函数 5. connect函数 6. read和recv函数 7. write和send函数 三、TCP编程 1. TCP介绍 2.…

基于vite的vue脚手架工具整合:ts、jsx、eslint、prettier、stylelint、tailwind...

为了帮助vue新手更高效的学习vue3的基础知识、组件开发以及项目方案整合,小卷给大家整理了一个10分钟搞定《基于vite的vue脚手架工具整合》的教程。所有工具都是目前最新的版本,实践和调试过,没有一行多余的配置。