JoyBeanRobber

导航

李沐动手学深度学习2——数据预处理

李沐动手学深度学习,有视频、有中文电子书(含配套代码),推荐!

视频(B站搜一大堆):https://www.bilibili.com/video/BV1fsmyYnEfw?spm_id_from=333.788.videopod.episodes&vd_source=0199f117e2bdbb60970034d4f33ff67d

官网电子书:https://zh.d2l.ai/index.html

代码如下,主要知识点是用独热编码处理缺失值(将空值转化为新属性)

 

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")

 

posted on 2025-04-16 15:18  欢乐豆掠夺者  阅读(23)  评论(0)    收藏  举报