为了能用深度学习来解决现实世界的问题,我们经常从预处理原始数据开始, 而不是从那些准备好的张量格式数据开始。
首先我们准备一个人工数据集:
这是一个.csv格式(用逗号隔开)的数据文件。该数据集有四行三列。其中每行描述了房间数量(“NumRooms”)、巷
子类型(“Alley”)和房屋价格(“Price”)。
1. 读取数据集
要从创建的CSV文件中加载原始数据集,我们导入pandas
包并调用read_csv
函数。
pd.read_csv()接收一个csv文件(以路径表示)作为参数,将这个csv文件中的数据读取出来。
2. 处理缺失值
注意,“NaN”项代表缺失值。 为了处理缺失的数据,典型的方法包括插值法和删除法, 其中插值法用一个替代值弥补缺失值,而删除法则直接忽略缺失值。 在这里,我们将考虑插值法。
通过位置索引iloc
,我们将data
分成inputs
和outputs
, 其中前者为data
的前两列,而后者为data
的最后一列。 对于inputs
中缺少的数值,我们用同一列的均值替换“NaN”项。
注意:1. data.iloc[]用于访问读进来的csv数据的索引。这个读进来的数据是不能直接用[]进行索引访问的,要使用data.iloc[]进行索引访问。
2. 读进来的csv数据的保存对象(这里是inputs,outputs)的fillna方法可以处理缺失值,inputs.fillna(inputs.mean())表示用平均的方法处理inputs中的缺失值。
对于inputs
中的类别值或离散值,我们将“NaN”视为一个类别。 由于“巷子类型”(“Alley”)列只接受两种类型的类别值“Pave”和“NaN”, pandas
可以自动将此列转换为两列“Alley_Pave”和“Alley_nan”。 巷子类型为“Pave”的行会将“Alley_Pave”的值设置为1,“Alley_nan”的值设置为0。 缺少巷子类型的行会将“Alley_Pave”和“Alley_nan”分别设置为0和1。
3. 转换为张量格式
上面的inputs及outputs不能直接使用torch.tensor(inputs)或torch.tensor(outputs)转换成tensor,要使用inputs.values以及outputs.values.
标签:inputs,outputs,Alley,data,Pytorch,Pave,csv,数据,预处理 From: https://www.cnblogs.com/pkuqcy/p/17390731.html