import os
import pandas as pd
import torch
# 这里不需要加..,因为..会返回上一级目录创建data文件夹
# os.makedirs(os.path.join('..','data'),exist_ok=True)
os.makedirs(os.path.join('data'), exist_ok=True)
# CSV 是逗号分隔值的意思
data_file = os.path.join('data','house_tiny.csv')
# open函数返回一个文件对象,赋值给f
# with格式,确保文件自动保存关闭
# 如果data下house_tiny.csv文件不存在,open() 函数会自动创建一个新的空文件;
# 当文件已经存在时:它会立即**清空(Truncate)**该文件中所有已存在的内容,重新写新内容
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')
data = pd.read_csv(data_file)
print(data)
inputs = data.iloc[:,0:2]
outputs = data.iloc[:,2]
# 计算 inputs 中所有数值类型列的平均值
# 由于 Alley 列没有计算出平均值,所以 fillna 不会改变 Alley 列中的 NaN
inputs = inputs.fillna(inputs.mean())
print(inputs)
# dummy_naTrue 时,get_dummies 会将 NaN 也视为一个独立的类别,并为它创建一个专门的指示列
inputs = pd.get_dummies(inputs,dummy_na=True)
print(inputs)
# 将inputs和outputs都是数值,转化为tensor
# 原始的inputs是pandas.DataFrame数据类型
inputs_tensor = torch.tensor(inputs.to_numpy(dtype=float))
outputs_tensor = torch.tensor(outputs.to_numpy(dtype=float))
# 但是这里默认是64位,但64位比较慢,一般用24位
print(inputs_tensor)
print(outputs_tensor)
输出
Numrooms Alley Price
0 NaN PAVE 127500
1 2.0 NaN 106000
2 4.0 NaN 178100
3 NaN NaN 140000
Numrooms Alley
0 3.0 PAVE
1 2.0 NaN
2 4.0 NaN
3 3.0 NaN
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
tensor([[3., 1., 0.],
[2., 0., 1.],
[4., 0., 1.],
[3., 0., 1.]], dtype=torch.float64)
tensor([127500., 106000., 178100., 140000.], dtype=torch.float64)
1554

被折叠的 条评论
为什么被折叠?



