深度学习基础知识-02 数据预处理

深度学习的数据预处理通常包括:

1.数据清洗:去除错误或不完整的数据。

2.归一化:调整数据范围,如将像素值缩放到0-1。

3.数据增强:通过旋转、缩放等方法增加数据多样性。

4.数据划分:将数据分为训练集、验证集和测试集。

5.编码:将分类数据转换为机器学习模型可以处理的形式,如独热编码。

CSV文件预处理:

写入csv文件

python 复制代码
import os  # 导入os模块,用于操作文件和目录

# 创建一个名为'data'的目录,该目录位于当前工作目录的上一级目录中
# 如果目录已存在,exist_ok=True参数确保不会抛出错误
os.makedirs(os.path.join('..','data'),exist_ok=True)

# 定义一个变量data_file,存储文件的完整路径
# 文件名为'home_tiny.txt',位于上一级目录中的'data'文件夹内
data_file=os.path.join('..','data','home_tiny.txt')

# 使用with语句打开文件,确保文件操作完成后自动关闭文件
# 'w'模式表示写入模式,如果文件已存在,则覆盖原有内容
with open(data_file,'w') as f:
    f.write('NumRooms,Ally,price\n')
    f.write('NA,PAve,127500\n')
    f.write('2,NA,197500\n')
    f.write('5,NA,177500\n')
    f.write('NA,NA,165500\n')

读csv文件

python 复制代码
import pandas as pd

data =pd.read_csv('../data/home_tiny.txt') # 使用pandas的read_csv函数读取位于上一级目录中'data'文件夹内的'home.tiny.txt'文件
print(data)

数据补全:注意,"NaN"项代表缺失值。 为了处理缺失的数据,典型的方法包括插值法和删除法, 其中插值法用一个替代值弥补缺失值,而删除法则直接忽略缺失值。

通过位置索引iloc,我们将data分成inputs和outputs, 其中前者为data的前两列,而后者为data的最后一列。 对于inputs中缺少的数值,我们用同一列的均值替换"NaN"项。

python 复制代码
# 使用iloc选择器从data中提取前两列作为输入特征(inputs)
# 即选择第0列和第1列(注意Python是从0开始计数的)
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]

# 对inputs中的缺失值进行填充
# 使用fillna方法,将缺失值替换为每列的平均值
inputs = inputs.fillna(inputs.mean())

对于inputs中的类别值或离散值,我们将"NaN"视为一个类别。 由于"巷子类型"("Alley")列只接受两种类型的类别值"Pave"和"NaN", pandas可以自动将此列转换为两列"Alley_Pave"和"Alley_nan"。 巷子类型为"Pave"的行会将"Alley_Pave"的值设置为1,"Alley_nan"的值设置为0。 缺少巷子类型的行会将"Alley_Pave"和"Alley_nan"分别设置为0和1。

python 复制代码
# 使用get_dummies函数对inputs进行独热编码
# dummy_na=True表示将缺失值也作为一个类别进行编码
inputs = pd.get_dummies(inputs, dummy_na=True)

  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

现在inputs和outputs中的所有条目都是数值类型,它们可以转换为张量格式。 当数据采用张量格式后,可以在后续进一步操作。

python 复制代码
# 将输入特征inputs转换为NumPy数组,并指定数据类型为float
# to_numpy()函数将DataFrame转换为数组,dtype=float确保数据类型为浮点数
X = np.array(inputs.to_numpy(dtype=float))

# 将输出标签outputs转换为NumPy数组,并指定数据类型为float
# to_numpy()函数将DataFrame转换为数组,dtype=float确保数据类型为浮点数
y = np.array(outputs.to_numpy(dtype=float))

(array([[3., 1., 0.],
        [2., 0., 1.],
        [4., 0., 1.],
        [3., 0., 1.]], dtype=float64),
 array([127500., 106000., 178100., 140000.], dtype=float64))

热编码(One-Hot Encoding)是一种处理分类数据的方法,常用于机器学习和统计分析中。其目的是将分类变量(如文本或标签)转换为一种格式,使得这些变量可以被算法有效处理。

相关推荐
Coding_Doggy几秒前
服务器迁移 | psql大批量数据以及navicat重新连接、conda 环境迁移
linux·数据库·人工智能
猿小猴子3 分钟前
主流 AI IDE 之一的 OpenCode 介绍
ide·人工智能·ai·opencode
一个处女座的程序猿3 分钟前
AGI之Multi-Agent之Moltbook:《The Anatomy of the Moltbook Social Graph》翻译与解读
人工智能·microsoft·multi-agent·moltbook
hans汉斯4 分钟前
国产生成式人工智能解决物理问题能力研究——以“智谱AI”、“讯飞星火认知大模型”、“天工”、“360智脑”、“文心一言”为例
大数据·人工智能·算法·aigc·文心一言·汉斯出版社·天工
这是个栗子4 分钟前
AI辅助编程(一) - ChatGPT
前端·vue.js·人工智能·chatgpt
发哥来了6 分钟前
主流AI视频生成商用方案选型评测:关键能力与成本效益分析
大数据·人工智能·音视频
机器学习之心9 分钟前
金融时间序列预测全流程框架:从SHAP特征选择到智能算法优化深度学习预测模型,核心三章实验已完成,尚未发表,期待有缘人!
人工智能·深度学习·金融
CoderJia程序员甲10 分钟前
GitHub 热榜项目 - 日榜(2026-02-01)
人工智能·ai·大模型·github·ai教程
渡我白衣13 分钟前
【MySQL基础】(2):数据库基础概念
数据库·人工智能·深度学习·神经网络·mysql·机器学习·自然语言处理
新缸中之脑15 分钟前
将CodeBERTa压缩到10KB以下
人工智能