返回

数据预处理:揭秘机器学习背后的幕后英雄(下)

人工智能

数据预处理:机器学习的幕后英雄

标准化与归一化:让数据保持一致

数据预处理的第一个步骤是标准化或归一化。就像将一群学生调整到一个标准身高一样,这些技术将数据转换为统一的格式,使不同变量的影响力保持一致。标准化通过将数据分布转换为均值为 0、标准差为 1 的正态分布来实现这一目标。归一化则将数据缩放到 0 到 1 之间,确保不同范围变量的公平竞争。

# 标准化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 归一化
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)

特征缩放:协调差异

特征缩放是标准化和归一化的延伸,但它针对的是单位不同的变量。想象一群不同尺寸的人穿着不同的鞋子。特征缩放就像将他们的鞋子调整到相同的尺寸,使每个人都能公平地行走。它通过将变量缩放到相同的量纲来消除单位差异对模型的影响。

# 特征缩放
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

异常值处理:剔除噪音

异常值就像数据中的杂草,它们可能扭曲模型。异常值处理就像除草,将这些极端值清除出去,使数据更加稳健。常用的方法包括 Winsorize、截尾和移除异常值。Winsorize 将异常值调整到指定的分位数,而截尾则简单地删除它们。移除异常值是一种更激进的方法,它可以完全消除可疑的数据点。

# Winsorize
from scipy.stats import winsorize
X_winsorized = winsorize(X, limits=[0.05, 0.05])

# 截尾
from sklearn.preprocessing import RobustScaler
scaler = RobustScaler()
X_capped = scaler.fit_transform(X)

# 移除异常值
X_clean = X[~np.isnan(X)]

缺失值处理:填补空白

现实世界数据往往不完美,缺失值就像拼图中的缺失碎片。缺失值处理策略就是补全这些空白,以确保数据完整且准确。常用的方法包括忽略缺失值、使用均值或中值填充缺失值、使用 k 近邻法或决策树估计缺失值。

# 忽略缺失值
X_clean = X.dropna()

# 使用均值填充缺失值
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy='mean')
X_filled = imputer.fit_transform(X)

# 使用决策树估计缺失值
from sklearn.ensemble import RandomForestClassifier
imputer = RandomForestClassifier()
X_filled = imputer.fit_transform(X)

哑变量编码:让类别说话

类别数据通常不能直接用于机器学习模型,就像你不能用苹果与橘子比较一样。哑变量编码就像将类别转换成不同的语言,每个类别对应一个 0-1 值。标签编码和独热编码是两种常见的哑变量编码方法。

# 标签编码
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
X_encoded = le.fit_transform(X)

# 独热编码
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder()
X_encoded = ohe.fit_transform(X)

机器学习数据预处理实践

掌握了这些技术后,让我们看看如何将它们应用到实际的机器学习项目中。就像烹饪一样,数据预处理也是一门艺术,需要根据具体数据集和建模目标进行调整。

评估预处理效果

预处理就像给模型量身定做一件衣服,它是否合身至关重要。我们可以使用各种指标,如模型准确度和训练时间,来评估预处理技术对模型性能的影响。就像试穿衣服一样,我们需要调整预处理参数,直到找到最佳的效果。

结论

数据预处理是机器学习成功的基石,就像一座建筑物的坚实地基。通过理解和应用这些技术,我们可以清除数据中的噪音和偏差,为机器学习模型构建奠定坚实的基础。记住,预处理是一段旅程,需要不断的探索和改进,就像不断完善自己的作品一样。

常见问题解答

  1. 标准化和归一化的区别是什么?

    • 标准化将数据转换为正态分布,而归一化将数据缩放到 0 到 1 之间。
  2. 特征缩放和标准化的区别是什么?

    • 特征缩放专门针对不同单位的变量,而标准化针对所有变量。
  3. 什么时候应该使用 Winsorize、截尾或移除异常值?

    • Winsorize 保留异常值的一部分影响,而截尾完全删除它们。移除异常值仅适用于极端情况。
  4. 缺失值处理的最佳策略是什么?

    • 最佳策略取决于数据类型、缺失值数量和建模目标。
  5. 独热编码和标签编码有什么区别?

    • 独热编码保留类别之间的关系,而标签编码不保留。