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

时间:2018-09-26 08:57:56

标签: python machine-learning normalization

具有以下数据: enter image description here

我正在尝试找出正确的规范化预处理。其中一些功能是分类功能,编码为“一次性编码”(a-c类),一些功能表示事件发生后的时间,而某些功能表示发行版本。

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

您如何确定适合数据的规范化技术?

1 个答案:

答案 0 :(得分:2)

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

  1. 归一化的原因是,没有任何特征会过度主导损失函数的梯度。我认为,某些算法比其他算法更擅长处理非规范化的特征,但总的来说,如果您的特征的比例有很大不同,则可能会遇到麻烦。因此归一化为0-1是合理的。
  2. 您希望最大化功能的熵,以帮助算法分离示例。您可以通过在给定范围(0-1)内尽可能多地分布值来实现此目的。有时,以不同的方式缩放要素空间的某些部分可能很有价值。例如,如果有十个版本,但六个基本相同,而其他四个却彼此非常不同,则可以进行扩展以使前六个版本靠在一起,而其余的则更多地散布。 / li>
  3. 第2点意味着缩放现在已成为您的训练/训练算法的一部分,请记住这一点!如果您要进行交叉验证,请分别缩放倍数,否则您将使用测试数据来训练整体的一部分。
  4. 有些算法(朴素的贝叶斯想到了)根本不使用连续值,而是分类值。确保您知道所选算法可以使用的算法。