首页 > 其他分享 >【pytorch学习】之数据预处理

【pytorch学习】之数据预处理

时间:2024-04-22 20:35:31浏览次数:24  
标签:inputs True NaN Alley 学习 pytorch Pave data 预处理

2 数据预处理

为了能用深度学习来解决现实世界的问题,我们经常从预处理原始数据开始,而不是从那些准备好的张量格式数据开始。在Python中常用的数据分析工具中,我们通常使用pandas软件包。像庞大的Python生态系统中的许多其他扩展包一样,pandas可以与张量兼容。

2.1 读取数据集

举一个例子,我们首先创建一个人工数据集,并存储在CSV(逗号分隔值)文件./data/house_tiny.csv中。以其他格式存储的数据也可以通过类似的方式进行处理。下面我们将数据集按行写入CSV文件中。

import os
os.makedirs(os.path.join('.', 'data'), exist_ok=True)
data_file = os.path.join('.', 'data', 'house_tiny.csv')
with open(data_file, 'w') as f:
    f.write('NumRooms,Alley,Price\n') # 列名
    f.write('NA,Pave,127500\n') # 每行表示一个数据样本
    f.write('2,NA,106000\n')
    f.write('4,NA,178100\n')
    f.write('NA,NA,140000\n')

要从创建的CSV文件中加载原始数据集,我们导入pandas包并调用read_csv函数。该数据集有四行三列。其中每行描述了房间数量(“NumRooms”)、巷子类型(“Alley”)和房屋价格(“Price”)。

import pandas as pd
data = pd.read_csv(data_file)
print(data)
   NumRooms Alley   Price
0       NaN  Pave  127500
1       2.0   NaN  106000
2       4.0   NaN  178100
3       NaN   NaN  140000

2.2 处理缺失值

注意,“NaN”项代表缺失值。为了处理缺失的数据,典型的方法包括插值法和删除法,其中插值法用一个替代值弥补缺失值,而删除法则直接忽略缺失值。在这里,我们将考虑插值法。
通过位置索引iloc,我们将data分成inputs和outputs,其中前者为data的前两列,而后者为data的最后一列。对于inputs中缺少的数值,我们用同一列的均值替换“NaN”项。

inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
# 选取数值类型的列
numeric_columns = inputs.select_dtypes(include=[np.number])
means = numeric_columns.mean()
inputs = inputs.fillna(means)
print(inputs)
   NumRooms Alley
0       3.0  Pave
1       2.0   NaN
2       4.0   NaN
3       3.0   NaN

对于inputs中的类别值或离散值,我们将“NaN”视为一个类别。由于“巷子类型”(“Alley”)列只接受两种类型的类别值“Pave”和“NaN”,pandas可以自动将此列转换为两列“Alley_Pave”和“Alley_nan”。巷子类型为“Pave”的行会将“Alley_Pave”的值设置为1,“Alley_nan”的值设置为0。缺少巷子类型的行会将“Alley_Pave”和“Alley_nan”分别设置为0和1。

inputs = pd.get_dummies(inputs, dummy_na=True)
print(inputs)
   NumRooms  Alley_Pave  Alley_nan
0       3.0        True      False
1       2.0       False       True
2       4.0       False       True
3       3.0       False       True
# True为1,Flase为0

2.3 转换为张量格式

现在inputs和outputs中的所有条目都是数值类型,它们可以转换为张量格式。

import torch
X = torch.tensor(inputs.to_numpy(dtype=float))
y = torch.tensor(outputs.to_numpy(dtype=float))
X, y
(tensor([[3., 1., 0.],
         [2., 0., 1.],
         [4., 0., 1.],
         [3., 0., 1.]], dtype=torch.float64),
 tensor([127500., 106000., 178100., 140000.], dtype=torch.float64))

声明:
本系列学习笔记主要以《动手学深度学习》的pytorch版本为主。
详细见GitHub:https://github.com/d2l-ai/d2l-zh
或者 https://zh.d2l.ai/

标签:inputs,True,NaN,Alley,学习,pytorch,Pave,data,预处理
From: https://www.cnblogs.com/zx-demo/p/18150820

相关文章

  • 模型评测-书生浦语大模型实战营学习笔记7&大语言模型10
    大语言模型学习-10.模型评测书生浦语大模型实战营学习笔记7视频教程特别像广告,所以这篇博客参考了很多其他内容给大家参考,主要是下面几个页面:https://zhuanlan.zhihu.com/p/641416694https://www.cnblogs.com/justLittleStar/p/17845341.htmlhttps://zhuanlan.zhihu.com/p/68......
  • ROS1学习记录(1)
    学习视频:8.ROS命令行工具的使用_哔哩哔哩_bilibiliRSO指令:(1)rqt_graph :快速可视化节点关系在运行小海龟的时候可以再开一个终端就可以可视化两个节点之间关系;eg:上图可以看出从键盘节点输入信息最后运用在海龟图像节点上,这是他们之间的通讯关系,中间的/turtle1/cmd_vel就......
  • pytorch
    pytorchpytorch基础Tensor(张量)pytorch中最基本的操作对象,表示的是一个多维的矩阵pytorch可以在GPU上运行,numpy的ndarry只能在CPU上运行Tensor数据类型:32位浮点型:torch.FloatTensor64位浮点型:torch.DoubleTensor16位整形:torch.ShoutTensor32位整形:torch.IntTens......
  • AI+X 经典共读-《动手学深度学习(Pytorch版)》Task打卡
    0.笔记仓库AI入门路线Task01:初识深度学习深度学习介绍和环境安装配置1.深度学习介绍1.1AI地图x轴:模式y轴:想做的东西感知:所见(人能够快速反应)推理:基于所见的想象知识:根据所见形成自己的知识规划:根据知识进行长远的规划自然语言处理:感知,用的最多的是机器翻译计算机视......
  • httprunner 4.x学习 - 09参数化parameters
    前言实现参数化使用parameters关键字,数据源有3种方式:1.在yaml文件中直接写测试数据源2.测试数据源写到csv文件3.自定义函数,函数返回列表形式数据参数化说明参数化分两种情况:1.单个参数进行参数化:如账号不一样,但密码一样,这时把账号作为单个参数名2.......
  • multi-agent框架camel学习笔记(二)RAG和向量数据库
    本系列想学习如何从零开始搭建一个multi-agent系统并融入到应用中,这篇文章主要写其中的LLM-agent的核心模块RAG和向量数据库,以及Camel系统中是如何使用RAG。1.为什么要用RAG(检索增强生成)先聊下什么是RAG,为什么我们要用RAG:RAG和向量数据库本身不是很新的技术,传统的搜广推里也......
  • 学习react
    搭建环境npxcreate-react-appmy-appcdmy-appnpmstart注意:my-app是项目名称,不能有大写字母<scripttype="text/babel"></script>--可以直接使用react语法  在APP.js里改主页面--输出hello,world//有个问题:保存后格式不对,看着很难受(但能跑就行);--div后不要空格就可以了/......
  • 持续性学习-Day15(前端基础CSS3)
    参考教学视频:秦疆1.什么是CSSCascadingStyleSheet层叠样式表CSS3圆角、阴影、动画...浏览器兼容性CSS优势:内容和表现分离网页结构表现统一,可以实现复用样式十分的丰富建议使用独立html的css文件利用SEO,容易被搜索引擎收录2.入门<linkrel="styleshee......
  • 【pytorch学习】之数据操作
    1数据操作为了能够完成各种数据操作,我们需要某种方法来存储和操作数据。通常,我们需要做两件重要的事:(1)获取数据;(2)将数据读入计算机后对其进行处理。如果没有某种方法来存储数据,那么获取数据是没有意义的。首先,我们介绍n维数组,也称为张量(tensor)。使用过Python中NumPy计算包的读者......
  • 置换群学习笔记
    一、群引自OIwiki:在数学中,群(group)是由一个集合\(G\),以及一个在\(G\)所有元素上进行的二元运算\(\cdot\),符合「群公理」的代数结构,记作\((G,\cdot)\)。群公理包含下述四个性质:满足封闭性。满足结合律。存在单位元(也称幺元)。存在逆元。而子群的定义则为......