那年夏天我和你躲在 这一大片宁静的海
直到后来我们都还在 对这个世界充满期待
今年冬天你已经不在 我的心空出了一块
很高兴遇见你 让我终究明白
回忆比真实精彩
🎵 王心凌《那年夏天宁静的海》
数据归一化(Normalization)是数据预处理中常见的一步,它通过缩放特征值,使它们位于一定范围内,通常是 [0, 1] 或 [-1, 1]。归一化有助于消除不同量纲和量级之间的影响,使得算法更加稳定和高效。本文将介绍如何使用 pandas 库进行数据归一化。
为什么需要归一化?
提升模型性能:归一化后的数据可以加速梯度下降优化过程,提高机器学习模型的收敛速度和预测性能。
消除量纲影响:在距离度量算法(如KNN)中,归一化能消除不同特征之间的量纲影响,使得特征之间的贡献更加均衡。
提高稳定性:归一化能防止数值计算中可能出现的溢出或下溢,提高模型的稳定性。
数据归一化方法
常见的归一化方法包括:
最小-最大归一化(Min-Max Normalization)
Z-score标准化
示例数据
首先,我们创建一个包含多个特征的示例 DataFrame。
python
复制代码
import pandas as pd
import numpy as np
# 创建示例数据
data = {
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data)
print("原始数据:")
print(df)
最小-最大归一化
python
df_min_max_scaled = (df - df.min()) / (df.max() - df.min())
print("\n最小-最大归一化后的数据:")
print(df_min_max_scaled)
Z-score标准化
Z-score标准化通过减去均值并除以标准差将特征值转化为均值为0,标准差为1的标准正态分布。
python
# Z-score标准化
df_z_score_scaled = (df - df.mean()) / df.std()
print("\nZ-score标准化后的数据:")
print(df_z_score_scaled)
完整代码示例
以下是完整的代码示例,从创建数据到应用两种归一化方法:
python
import pandas as pd
import numpy as np
# 创建示例数据
data = {
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data)
print("原始数据:")
print(df)
# 最小-最大归一化
df_min_max_scaled = (df - df.min()) / (df.max() - df.min())
print("\n最小-最大归一化后的数据:")
print(df_min_max_scaled)
# Z-score标准化
df_z_score_scaled = (df - df.mean()) / df.std()
print("\nZ-score标准化后的数据:")
print(df_z_score_scaled)
输出结果
plaintext
原始数据:
A B C
0 1 10 100
1 2 20 200
2 3 30 300
3 4 40 400
4 5 50 500
最小-最大归一化后的数据:
A B C
0 0.00 0.00 0.00
1 0.25 0.25 0.25
2 0.50 0.50 0.50
3 0.75 0.75 0.75
4 1.00 1.00 1.00
Z-score标准化后的数据:
A B C
0 -1.264911 -1.264911 -1.264911
1 -0.632456 -0.632456 -0.632456
2 0.000000 0.000000 0.000000
3 0.632456 0.632456 0.632456
4 1.264911 1.264911 1.264911
总结
数据归一化是数据预处理中重要的一步,通过缩放特征值,使其位于特定范围内,能够提高模型性能,消除量纲影响,提高计算稳定性。本文介绍了最常用的两种归一化方法:最小-最大归一化和Z-score标准化,并提供了 pandas 实现这些方法的完整代码示例。