需了解的 5 个 Scikit-learn 数据转换器

2025年2月28日 | 阅读 7 分钟

引言

为了将原始记录组合起来进行建模,数据转换是机器学习管道中的一个关键步骤。Scikit-learn,最流行的 Python 机器学习库之一,提供了各种转换器来帮助清理、缩放和转换数据集,以提高模型性能。这些转换器通过处理缺失数据、处理分类变量和标准化特征,确保各种算法能够有效地与数据交互。

通常,原始数据中的特征具有不同的分布或尺度,这使得人工智能模型难以发挥最佳性能。通过使用 StandardScaler 或 MinMaxScaler 等转换器,可以对数据进行标准化或归一化,从而实现更快的收敛和更准确的输出。OneHotEncoder 可用于将分类特征数据集转换为机器学习算法可以理解的数值表示。

转换器还利用更高级的技术,例如处理异常值和创建多项式特征,这些技术可以通过识别数据中的复杂相关性来提高模型准确性。总而言之,Scikit-learn 的数据转换器是关键工具,可帮助数据科学家有效地预处理数据,以便算法在相关且结构良好的数据集上进行训练。

排名前 5 的数据转换器是:

1) StandardScaler:标准化特征

它的作用

通过减去均值并缩放到单位方差,StandardScaler 标准化特征,使数据的均值为 0,标准差为 1。这对于像支持向量机 (SVM)、逻辑回归和神经网络这样依赖输入数据尺度的算法非常有用。

何时使用

当机器学习算法需要特征具有标准正态分布(均值 = 0,标准差 = 1)时,或者当您的数据集具有正态分布时,StandardScaler 是合适的。对于基于梯度的算法(如神经网络)或基于距离的算法(如支持向量机),其中特征的尺度可能会影响性能,因此强烈建议使用。

优点

  • 确保每个特征的重要性相等。
  • 加快基于梯度的算法的收敛速度。

缺点

  • 对异常值敏感,因为它们能够改变特征的均值和标准差。

语法

2) 使用 MinMaxScaler 将特征缩放到有限范围

它的作用

MinMaxScaler 将特征缩放到指定的范围,通常是 [0, 1]。通过将最大值设置为 1,最小值设置为 0 来重新缩放数据。这对于需要特征具有相同尺度的算法特别有用,例如神经网络和 K-近邻 (KNN)。

何时使用

当需要将数据缩放到特定范围时,MinMaxScaler 非常有用,特别是对于对参数范围敏感的算法。它经常用于图像处理(其中像素值在 0 到 1 之间)或从缩放特征中获益的算法。

优点

  • 保持所有特征尺度的统一性。
  • 保持数据的原始分布。

缺点

  • 极端值可能会扭曲最小值和最大值,使其对异常值高度敏感。

语法

3) RobustScaler:处理数据异常值

它的作用

为了缩放特征,RobustScaler 会去除中位数并使用 IQR(四分位距)作为基准。由于其对异常值的鲁棒性,它在包含可能扭曲缩放过程的极端值的数据集上表现更好。

何时使用

当您希望扩展特征但不想从数据中移除异常值时,请使用 RobustScaler。与 StandardScaler 和 MinMaxScaler 相比,RobustScaler 受异常值的影响较小,因为它使用中位数和四分位距。

优点

  • 通过不受极端值影响来很好地处理异常值。
  • 提高了具有偏斜分布数据集的缩放鲁棒性。

缺点

  • 如果数据中只有少量异常值,效果较差。

语法

4) 通过多项式特征扩展特征空间

它的作用

通过构建现有特征的多项式组合,可以使用 PolynomialFeatures 来创建新特征。通过这样做,可以更轻松地捕获目标变量和特征之间的非线性关系。它通常用于为线性回归模型增加非线性和提高模型性能。

何时使用

如果您仍想使用线性模型,但怀疑特征与感兴趣的变量之间的关系是非线性的,那么 PolynomialFeatures 是最佳选择。它可以在不需要更复杂的模型的情况下捕捉特征之间的非线性交互作用。

优点

  • 捕获特征之间非线性的关系。
  • 可以显著提高线性模型在非线性数据上的性能。

缺点

  • 可能会导致特征数量快速增长(维度灾难)。
  • 如果多项式的度设置得太高,可能会导致过拟合。

语法

5) OneHotEncoder:编码分类变量

它的作用

使用 OneHotEncoder,分类数据被转换为独热编码格式,其中使用二元向量表示每个类别。处理机器学习模型中的分类特征至关重要,因为许多算法需要数值输入,无法直接处理分类数据。

何时使用

处理分类数据时,使用 OneHotEncoder,特别是对于需要数值输入的算法,如梯度提升、决策树和随机森林。当类别之间没有固有的序数关系时,独热编码也很有用。

优点

  • 将分类数据转换为机器学习算法可理解的格式。
  • 防止为非序数分类特征添加序数关系。

缺点

  • 增加了数据集的维度,这对于具有大量类别的类别可能很麻烦。
  • 如果有许多类别,可能会产生稀疏矩阵。

语法

评估和选择合适的数据转换器

机器学习算法的规格和您正在处理的数据类型将决定哪种数据转换器是最佳的。为了帮助您做出决定,我们比较了最受欢迎的 5 种数据转换器:OneHotEncoder、PolynomialFeatures、RobustScaler、MinMaxScaler 和 StandardScaler。

  • RobustScaler 与 MinMaxScaler 与 StandardScaler

尽管它们都处理数值数据,但这三种转换器具有不同的应用和方法。StandardScaler 最适合那些期望数据呈正态分布或需要缩放输入的算法,例如支持向量机 (SVM) 或神经网络算法。它通过去除均值并缩放到单位方差来标准化特征。然而,它对异常值的敏感性可能会扭曲标准差和均值。

相比之下,MinMaxScaler 将特征缩放到预定范围,通常是 [0, 1]。它对于那些受益于特征落在某个范围内的算法很有用,例如神经网络和 K-近邻 (KNN)。然而,由于极端值会扭曲尺度,因此它对异常值高度敏感。

对于包含异常值的数据集,RobustScaler 是更好的选择。它通过使用四分位距 (IQR) 和中位数进行缩放,使数据对异常值具有鲁棒性。尽管它对极端值具有鲁棒性,但在没有异常值的情况下它可能效果不佳。

  • 多项式特征

通过创建现有特征的多项式组合,PolynomialFeatures 可以转换您的数据。如果您想使用线性模型但怀疑数据中存在非线性关系,这很有用。在预测特征之间存在更高阶关系可以提高性能的线性回归模型中,它尤其出色。另一方面,它会导致特征集快速增长,这可能会导致过拟合并增加计算复杂性。

  • OneHotEncoder

在处理分类数据时,OneHotEncoder 对于将分类变量转换为机器学习算法可以处理的数值数据至关重要。为了确保非序数分类特征被表示而不会强制添加虚假的序数关系,它为每个类别生成二元矩阵。尽管它经常用于随机森林和决策树等模型,但如果您的数据集具有大量类别,它可能会显着增加其维度。

选择合适的数据转换器

  • 对于具有正态分布的数据以及对输入特征尺度敏感的算法(如 SVM 或基于梯度的算法),StandardScaler 的表现良好。
  • 当特征需要精确缩放到特定范围时,应使用 MinMaxScaler。这尤其适用于依赖距离测量(如 KNN 和神经网络)的算法。
  • 如果您希望防止异常值影响数据集的缩放,RobustScaler 是最佳选择。
  • 在使用线性模型时,PolynomialFeatures 有助于捕获非线性关系;然而,如果使用不当,它可能导致过拟合。
  • 在编码分类变量时——尤其是那些没有自然顺序的变量——OneHotEncoder 是推荐的选择。

下一主题什么是 Epoch