李沐动手学深度学习2——数据预处理
李沐动手学深度学习,有视频、有中文电子书(含配套代码),推荐!
代码如下,主要知识点是用独热编码处理缺失值(将空值转化为新属性)
import os import pandas as pd import torch def write_data(): 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') # write_data() data = pd.read_csv("../data/house_tiny.csv") print(data) inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2] # fillna函数:填补缺失值 inputs["NumRooms"] = inputs["NumRooms"].fillna(inputs["NumRooms"].mean()) print(inputs) # pandas的get_dummies函数是独热编码函数 # 独热编码 One-Hot Encoding # 独热编码将分类变量转化为虚拟变量 # 比如color:[red, yellow, blue]转化为red:[1, 0, 0],yellow:[0, 1, 0],blue:[0, 0, 1] inputs = pd.get_dummies(inputs, dummy_na=True) print(inputs) # tensor只支持float,int,bool,且内部的所有数值类型必须统一,所以要将先将类型统一转换为float X, y = torch.tensor(inputs.to_numpy(dtype=float)), torch.tensor(outputs.to_numpy(dtype=float)) print(X, y, sep="\n")