【问题标题】:Scaling of categorical variable分类变量的缩放
【发布时间】:2020-11-27 22:25:45
【问题描述】:
  1. 在构建模型之前是否需要对分类变量进行缩放? 我已经使用 StandardScalear 缩放了我所有的连续数值变量 现在所有的 continue 变量都在 -1 和 1 之间,因为分类列是二进制的。

  2. 它将如何影响我的模型?

  3. 有人可以解释一下,缩放的分类变量将如何影响决策树分类器中的节点拆分

【问题讨论】:

  • 这取决于您为分类变量使用的编码以及您使用的决策树实现,例如roamanalytics.com/2016/10/28/…。此外,对于基于树的模型,无需缩放连续变量。
  • 谢谢@Dan,这真的很有帮助

标签: python pandas normalization


【解决方案1】:

当您对分类变量进行 one-hot 编码时,编码变量中的值变为 0 和 1。因此,编码变量不会对您的模型产生负面影响。对变量进行编码并将其传递给 ML 学习算法这一事实很好,因为您可以从 ML 模型中获得更多见解。

在扩展数据集时,请确保注意两件事:

  1. 有些机器学习算法需要对数据进行缩放,有些则不需要。最好只为对未缩放数据敏感的模型(例如 kNN)缩放数据。

  2. 有多种方法可以扩展您的数据。 StandardScaler() 就是其中之一,但它容易受到异常值的影响。因此,请确保您使用的扩展方法最适合您的业务需求。您可以在此处了解有关不同缩放方法的更多信息:https://scikit-learn.org/stable/auto_examples/preprocessing/plot_all_scaling.html

编码的分类变量包含 0 和 1 上的值。因此,甚至不需要对它们进行缩放。但是,如果您选择在将数据用于规模敏感的 ML 模型之前对整个数据集进行缩放,则会对它们应用缩放方法。

【讨论】:

  • 缩放一个热编码变量的意义何在?此外,对高基数分类进行热编码并不是一个好主意,尤其是对于树。
  • 没有点缩放编码变量。我想说的是,最好先用特征工程和编码等技术完成数据集的处理,然后一旦数据准备好用于 ML 算法,最好为需要缩放数据集的算法进行缩放。
  • 谢谢@Arsik36,你的回答真的很有帮助
  • “数据集中的编码分类变量不会改变 DecisionTreeClassifier() 拆分节点的方式。” 这根本不是真的,请参阅我在 OP 上发布的链接
  • 感谢您的留言。我编辑了我的回复,并将阅读您的文章并从中了解更多信息。我注意到它已经5岁了。您对今天仍然有用的信息有信心吗?
猜你喜欢
  • 2017-10-03
  • 2018-01-21
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 2020-11-23
  • 2020-05-12
相关资源
最近更新 更多