动手学习Deep learning-数据预处理

数据预处理:

import os

os.makedirs(os.path.join('..','data'),exist_ok=True)     #自动读取该代码文件的文件位置,并返回上级目录创建data文件
data_file = os.path.join('..','data','house_tiny.csv')   #创建CSV文件
with open(data_file, 'w') as f:     #打开data_file,并指定以写入模式('w')打开文件。在这个文件对象上可以使用.write()方法来写入数据
    f.write('NumRooms,Alley,Price\n')    #每一列的名字
    f.write('NA,Pave,127500\n')          #NA表示未知
    f.write('2,NA,106000\n')
    f.write('4,NA,178100\n')
    f.write('NA,NA,140000\n')

1. `os.makedirs(os.path.join('..','data'), exist_ok=True)`:

   - `os.makedirs()`是一个函数,用来创建文件夹。

   - 这个函数中的`'..'`意味着上一级目录,`'data'`是文件夹的名字。

   - `exist_ok=True`的意思是如果文件夹已经存在,就不会报错。

2. `data_file = os.path.join('..','data','house_tiny.csv')`:

   - `os.path.join()`也是一个函数,用来拼接路径。

   - 这个函数中的`'..'`意味着上一级目录,`'data'`是文件夹的名字,`'house_tiny.csv'`是文件的名字。

   - 这一行代码的作用是将上一级目录中的`data`文件夹下的`house_tiny.csv`文件的路径赋值给`data_file`这个变量。

从创建的CSV文件中加载原始数据集:

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

读取csv文件最常用的库是panda库,用该库的read_csv函数读取刚刚写的data_file这个csv文件,并将其赋值给data这个变量。

为了处理缺失数据,典型方法包括:插值和删除,这里我们考虑插值

如果对于删除来说的话就是缺一个数据就把这个样本这一行丢掉,但是会造成数据量的减少,所以不考虑。

inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
inputs = inputs.fillna(inputs.iloc[1:].mean())   #fillna 是 Python 语言中的一个函数,通常用于处理缺失值(NaN)。它可以用于填充缺失值,以使数据集中的数据更加完整和有价值。
print(inputs)

   NumRooms Alley

0               3.0 Pave

1               2.0 NaN

2               4.0 NaN

3               3.0 NaN

 对于填充缺失值,您可以使用fillna()函数来填充inputs中除了第一行以外的缺失值。

- `data.iloc[:,0:2]`是选择了`data`这个数据集的所有行,以及第0列到第1列(不包括第2列)的数据。这表示选择了数据集中的前两列作为输入。

- `data.iloc[:,2]`则选择了`data`这个数据集的所有行,以及第2列的数据。这表示选择了数据集中的第2列作为输出。

`iloc`是Pandas库中的一个方法,用于通过行索引和列索引来选择数据。它是基于整数位置进行索引的。

`iloc`的语法是`data.iloc[行索引, 列索引]`。

- 行索引可以是单个整数、整数列表、整数切片或布尔值列表。例如,`[0]`表示选择第一行,`[1:3]`表示选择第二行到第三行,`[True, False, True]`表示根据布尔条件选择行。

- 列索引可以是单个整数、整数列表、整数切片或布尔值列表。例如,`[0]`表示选择第一列,`[1:3]`表示选择第二列到第三列,`[True, False]`表示根据布尔条件选择列。

通过使用`iloc`方法,可以根据整数位置来对数据集进行切片和选择操作,这对于数据预处理、特征选择等任务非常有用。

inputs = pd.get_dummies(inputs,dummy_na=True,dtype = int)
print(inputs)

    NumRooms Alley_Pave Alley_nan

0                3.0                 1               0

1                2.0                 0               1

2                4.0                 0               1

3                3.0                 0               1

这段代码的作用是对`inputs`进行独热编码,并将结果显示为0和1的形式,并且将数据类型设置为整数(int)。

`pd.get_dummies()`函数用于进行独热编码,将分类变量转换为二进制的特征向量表示。通过设置`dummy_na=True`,函数会为缺失值创建一个额外的列,并将缺失值表示为1,非缺失值表示为0。同时,通过设置`dtype=int`,将结果的数据类型设置为整数。

因此,`print(inputs)`将显示经过独热编码后的数据,其中缺失值表示为1,非缺失值表示为0,并且数据类型为整数。

如果没有dtype = int,那么编译出来的1就显示True,0就显示False。

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

import torch

x,y = torch.tensor(inputs.values),torch.tensor(outputs.values)
x,y

 

  • 59
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值