网站建设评审标准,asp网站安全吗,建企业门户网站,房子一、数据预处理
为了能用深度学习来解决现实世界的问题#xff0c;我们经常从预处理原始数据开始#xff0c; 而不是从那些准备好的张量格式数据开始。 在Python中常用的数据分析工具中#xff0c;我们通常使用pandas软件包。 像庞大的Python生态系统中的许多其他扩展包一样…一、数据预处理
为了能用深度学习来解决现实世界的问题我们经常从预处理原始数据开始 而不是从那些准备好的张量格式数据开始。 在Python中常用的数据分析工具中我们通常使用pandas软件包。 像庞大的Python生态系统中的许多其他扩展包一样pandas可以与张量兼容。下面简要介绍了使用pandas预处理原始数据并将原始数据转换为张量格式的步骤。
1、创建文件存入数据集后读取数据集
举一个例子我们首先创建一个人工数据集并存储在CSV逗号分隔值文件 …/data/house_tiny.csv中。 以其他格式存储的数据也可以通过类似的方式进行处理。 下面我们将数据集按行写入CSV文件中。
import os
//创建文件并写入数据
os.makedirs(os.path.join(.., data), exist_okTrue)
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)要从创建的CSV文件中加载原始数据集我们导入pandas包并调用read_csv函数。该数据集有四行三列。其中每行描述了房间数量“NumRooms”、巷子类型“Alley”和房屋价格“Price”。
# 如果没有安装pandas只需取消对以下行的注释来安装pandas
# !pip install pandas
import pandas as pd
//读取文件数据
data pd.read_csv(data_file)
print(data)输出
2、处理缺失值
注意“NaN”项代表缺失值。 为了处理缺失的数据典型的方法包括插值法和删除法 其中插值法用一个替代值弥补缺失值而删除法则直接忽略缺失值。 在这里我们将考虑插值法。
通过位置索引iloc我们将data分成inputs和outputs 其中前者为data的前两列而后者为data的最后一列。 对于inputs中缺少的数值我们用同一列的均值替换“NaN”项。
inputs, outputs data.iloc[:, 0:2], data.iloc[:, 2]
inputs inputs.fillna(inputs.mean(inputs.mean(numeric_onlyTrue)))
print(inputs)输出 对于inputs中的类别值或离散值我们将“NaN”视为一个类别。 由于“巷子类型”“Alley”列只接受两种类型的类别值“Pave”和“NaN” pandas可以自动将此列转换为两列“Alley_Pave”和“Alley_nan”。 巷子类型为“Pave”的行会将“Alley_Pave”的值设置为1“Alley_nan”的值设置为0。 缺少巷子类型的行会将“Alley_Pave”和“Alley_nan”分别设置为0和1。
inputs pd.get_dummies(inputs, dummy_naTrue)
print(inputs)输出
3. 转换为张量格式
现在inputs和outputs中的所有条目都是数值类型它们可以转换为张量格式。
import torchX torch.tensor(inputs.to_numpy(dtypefloat))
y torch.tensor(outputs.to_numpy(dtypefloat))
print(X)
print(y)输出
二、小结
pandas软件包是Python中常用的数据分析工具中pandas可以与张量兼容。用pandas处理缺失的数据时我们可根据情况选择用插值法和删除法。数据预处理是为了改善数据挖掘分析工作减少时间降低成本和提高质量。很有必要就像做菜不洗菜这样的人做出来的菜质量也不会好在哪里没人愿意吃。
三、完整代码展示
import torch
import os
# 如果没有安装pandas只需取消对以下行的注释来安装pandas
# !pip install pandas
import pandas as pdos.makedirs(os.path.join(.., data), exist_okTrue)
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)data pd.read_csv(data_file)
print(data)inputs, outputs data.iloc[:, 0:2], data.iloc[:, 2]
inputs inputs.fillna(inputs.mean(numeric_onlyTrue))
print(inputs)inputs pd.get_dummies(inputs, dummy_naTrue)
print(inputs)X torch.tensor(inputs.to_numpy(dtypefloat))
y torch.tensor(outputs.to_numpy(dtypefloat))print(X)
print(y)