李沐动手学深度学习:04 数据操作+数据预处理

一、相关资料链接

  1. 链接: 哔哩哔哩李沐课程
  2. 链接: 课程代码及PPT

二、代码及笔记(使用Jupyter Notebook)

(一)数据预处理:创建一个人工数据集,并且存储在csv(逗号分隔值)文件
1. 创建一个文件夹,文件名为:house_tiny.csv csv是指每一行是一个数据,每一个域是用逗号分开的。这里写的几行f.write就是在往前几行创建的csv文件里写入数据。#1:告诉你有多少个房间,Alley是进门的那个路是什么样,这个房子卖多少钱。#2 NA是未知数,pave是铺路,127500是价格。一般读取csv文件使用的是pandas的库,如果没有安装pandas,只需在jupyter notebook中执行 !pip install pandas

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')    #1  列名
    f.write('NA,Pave,127500\n')          #2  每行表示一个样本
    f.write('2,NA,106000\n')
    f.write('4,NA,178100\n')
    f.write('NA,NA,140000\n')

2.

import pandas as pd

data = pd.read_csv(data_file)
print(data)

如果不使用print,则更加好看,是html的形式展示出来的,如下:

import pandas as pd

data = pd.read_csv(data_file)
data

运行结果显示如下:

在这里插入图片描述
3. 为了处理缺失的数据(NA),典型的方法包括 插值 和 删除,这里我们考虑插值。此时的data是一个4x3的表,#1 通过.iloc把第一个的第0和第1列和所有的行拿出来,放在input里面,然后把最后一列放在output里面。 #2 input 中fillna对于所有是notnumber(NA)的域填一个值,所有填值为mean(已知两个数值2和4,则取两个数的平均值进行填充)

inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]  #1
inputs = inputs.fillna(inputs.mean())                 #2
print(inputs)

4. 对于inputs中的类别值(不是数值)或者离散值,我们将“NaN”视为一个类别。即把缺失的作为一个特别的类别,然后再吧字符串用数值表示。如上Alley有两个值:Pave和NaN,则用get_dummies建两类

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

5. 我们已经把所有缺失的值和字符串已经变成一个值(数值类型)那么则可以把它们转换成pytorch的tensor(张量格式)。把一个csv文件变成一个纯张量了。float64是python默认的浮点数。而outputs中没有缺失值,所有不需要任何改变

import torch

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

猜你喜欢

转载自blog.csdn.net/m0_45521766/article/details/126331367