13 数据清洗与准备

在深度学习的过程中,数据是模型性能的基石。为了让我们的模型能够更加准确地学习到数据中的模式,进行有效的数据预处理是至关重要的一步。本篇将介绍深度学习中的数据清洗与准备,帮助你为接下来的特征工程做好铺垫。

数据清洗的重要性

在实际应用中,我们常常会遇到“脏数据”。这类数据可能包含了重复的记录、缺失的值、异常值等问题。例如,在处理用户行为数据时,一个用户可能在系统中多次注册,造成重复记录。这样的数据不仅会消耗模型的学习能力,还可能导致模型的误导性预测。

常见的数据清洗步骤

以下是一些常见的数据清洗步骤:

  1. 删除重复数据
  2. 处理缺失值
  3. 处理异常值
  4. 标准化数据格式
  5. 数据类型转换

接下来,我们将通过代码示例来详细解释这些步骤。

1. 删除重复数据

使用pandas库,我们可以很方便地删除数据框中的重复记录。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import pandas as pd

# 创建一个示例数据框
data = {
'user_id': [1, 2, 2, 3, 4],
'action': ['click', 'view', 'view', 'click', 'view']
}
df = pd.DataFrame(data)

# 查看原始数据框
print("原始数据框:")
print(df)

# 删除重复记录
df_cleaned = df.drop_duplicates()

# 查看清理后的数据框
print("\n清理后的数据框:")
print(df_cleaned)

2. 处理缺失值

缺失值是数据集中常见的问题。我们可以选择删除包含缺失值的行,或者用某个统计量(例如均值、中位数)填补缺失值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 创建一个包含缺失值的示例数据框
data_with_nan = {
'user_id': [1, 2, None, 4],
'action': ['click', None, 'view', 'view']
}
df_nan = pd.DataFrame(data_with_nan)

# 查看原始数据框
print("原始数据框:")
print(df_nan)

# 使用均值填补缺失值
df_nan['user_id'] = df_nan['user_id'].fillna(df_nan['user_id'].mean())

# 删除包含缺失值的行
df_nan = df_nan.dropna()

# 查看清理后的数据框
print("\n清理后的数据框:")
print(df_nan)

3. 处理异常值

异常值通常会影响模型的性能。我们可以使用统计学的方法(如Z-score或IQR方法)来检测异常值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import numpy as np

# 创建一个示例数据框
data = {
'age': [22, 25, 29, 100, 27]
}
df_age = pd.DataFrame(data)

# 计算IQR
Q1 = df_age['age'].quantile(0.25)
Q3 = df_age['age'].quantile(0.75)
IQR = Q3 - Q1

# 定义异常值的范围
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

# 删除异常值
df_age_cleaned = df_age[(df_age['age'] >= lower_bound) & (df_age['age'] <= upper_bound)]

# 查看清理后的数据框
print("\n清理后的数据框:")
print(df_age_cleaned)

4. 标准化数据格式

对于模型训练,我们需要确保所有数据格式一致,比如日期格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from datetime import datetime

# 创建一个包含不同日期格式的示例数据框
data_date = {
'date': ['2023-01-01', '01/02/2023', 'March 3, 2023']
}
df_date = pd.DataFrame(data_date)

# 将日期统一转化为datetime格式
df_date['date'] = pd.to_datetime(df_date['date'])

# 查看清理后的数据框
print("\n统一格式后的数据框:")
print(df_date)

5. 数据类型转换

确保每一列数据的类型与其内容相对应。通过pandasastype()方法,我们可以进行类型转换。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 创建一个包含字符串数字的示例数据框
data_types = {
'user_id': ['1', '2', '3', '4']
}
df_types = pd.DataFrame(data_types)

# 查看原始数据框类型
print("原始数据框类型:")
print(df_types.dtypes)

# 转换数据类型
df_types['user_id'] = df_types['user_id'].astype(int)

# 查看转换后的数据框类型
print("\n转换后的数据框类型:")
print(df_types.dtypes)

小结

以上是数据清洗与准备的几个主要步骤,通过这些步骤,能够有效地提升数据的质量,为后续的特征工程打下坚实的基础。对于处理的每一步都要特别留意,因为数据的质量直接影响到深度学习模型的表现。

在下一篇中,我们将深入探讨特征工程的相关内容,包括如何从清洗后的数据中提取出关键特征,以便更好地训练模型。请继续关注!

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论