1李沐动手学深度学习v2/数据预处理

# 创建数据集并存储到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')
    # 数据,NA表示未知
    f.write('NA,Pave,127500\n')
    f.write('2,NA,106000\n')
    f.write('4,NA,178100\n')
    f.write('NA,NA,140000\n')
#!pip install pandas
# 从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
# 获取input output
# iloc 取所有行,取所有行的第0列和第1列
inputs,outputs=data.iloc[:,0:2],data.iloc[:,2]
# NA的处理,mean()只对number类型有效
inputs=inputs.fillna(inputs.mean())
print(inputs)
   NumRooms Alley
0       3.0  Pave
1       2.0   NaN
2       4.0   NaN
3       3.0   NaN
# NA与字符串->number类型
inputs=pd.get_dummies(inputs, dummy_na=True)
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
# 数据预处理完毕,转为张量,开始torch
import torch
X,y=torch.tensor(inputs.values),torch.tensor(outputs.values)
# 补充,float64是python默认的浮点数类型,深度学习一般使用float32
X,y
(tensor([[3., 1., 0.],
         [2., 0., 1.],
         [4., 0., 1.],
         [3., 0., 1.]], dtype=torch.float64),
 tensor([127500, 106000, 178100, 140000]))
# query 1
# reshape不会创建新的对象,只改变形状不改变地址
a=torch.arange(12)
b=a.reshape(3,4)
b[:]=2
a
tensor([2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])

你可能感兴趣的:(深度学习,深度学习,python,机器学习)