使用二进制和连续变量对数据进行归一化以进行机器学习

Shl*_*rtz 6 python machine-learning normalization

有以下数据: 在此处输入图片说明

我试图找出正确的标准化预处理。一些特征是分类特征,编码为“one-hot-encoding”(类别ac),一些特征代表事件发生后的时间,一些代表发布版本。

我正在考虑使用sklearn MinMaxScaler将数据从 0 标准化为 1,但我不确定这是正确的方法。

您如何为您的数据决定合适的归一化技术?

kut*_*kem 7

没有灵丹妙药,但有一些原则适用:

  1. 归一化的原因是没有任何特征过度支配损失函数的梯度。我认为,有些算法比其他算法更擅长处理非标准化特征,但总的来说,如果您的特征具有截然不同的尺度,您可能会遇到麻烦。所以归一化到 0 - 1 的范围是明智的。
  2. 您希望最大化特征的熵,以帮助算法分离示例。您可以通过在给定范围 (0-1) 内尽可能多地分布值来实现这一点。有时,以与其他部分不同的方式缩放特征空间的某些部分可能很有价值。例如,如果有 10 个版本,但 6 个本质上相同,而其他四个彼此非常不同,那么进行缩放可能是有意义的,即前六个版本靠得更近,其余的更分散。
  3. 第 2 点意味着现在缩放是您的训练/训练算法的一部分,请记住这一点!如果您正在进行交叉验证,请单独缩放折叠,否则您将使用测试数据训练整体的一部分。
  4. 一些算法(想到朴素贝叶斯)根本不适用于连续值,而是分类值。确保您知道您选择的算法可以使用什么。