【问题标题】:MinMaxScaler + DecisionTree classifier with numerical and categorical dataMinMaxScaler + 具有数值和分类数据的决策树分类器
【发布时间】:2020-02-26 21:26:08
【问题描述】:

我想知道我应该如何处理以下情况:

我有一个需要分析的数据集。它是标记数据,我需要对其执行分类任务。有些特征是数字的,有些是分类的(非序数的),我的问题是我不知道如何处理分类的。

在分类之前,我通常会应用一个 MinMaxScaler。但由于分类特征,我无法在这个特定数据集中执行此操作。

我已经阅读了one-hot encoding,但我不明白如何将它应用到我的案例中,因为我的数据集有一些数字特征和 10 个分类特征,并且 one-hot 编码会在数据框中生成更多列,而且我不知道我需要如何准备结果数据帧以将其发送到决策树分类器。

为了澄清情况,我目前使用的代码如下:

y = df.class
X = df.drop(['class'] , axis=1)

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X = scaler.fit_transform(X)

# call DecisionTree classifier

df 具有分类特征时,我收到以下错误:TypeError: data type not understood。所以,如果我应用one-hot encoding,我会得到一个包含许多列的数据框,我不知道决策树分类器是否会理解我的数据的真实情况。我的意思是如何向分类器表达一组列属于特定特征?我对整个情况的理解错了吗?抱歉,如果这是一个令人困惑的问题,但我是新手,我对如何处理这个问题感到很困惑。

【问题讨论】:

  • 如果使用 DecisionTree 分类器,您实际上不需要扩展数据
  • 在尝试 one-hot 编码(对于树分类器并不总是很好)之前,请尝试查看一些更基本的编码方案,例如序数编码。您可以尝试这样的encoder 的sklearn 实现。尝试更新您的问题,然后我们可以帮助您进行调试。

标签: python pandas decision-tree


【解决方案1】:

我没有足够的声誉发表评论,但请注意,决策树分类器不需要缩放其输入。因此,如果您使用的是决策树分类器,只需使用出现的特征即可。

如果您使用需要特征缩放的方法,那么您可能应该分别进行一次热编码和特征缩放 - 请参阅此答案:https://stackoverflow.com/a/43798994/9988333

或者,您可以使用“开箱即用”处理分类变量的方法,例如 LGBM。

【讨论】:

  • 感谢您的回答。但是如何向决策树分类器发送一个包含数值和分类数据的数据集,分类器可以很好地处理这种数据集?
  • @mjbsgll 您可以在发送分类数据之前对其进行一次性编码。要查看分类器的性能如何,您应该使用验证集(或者,理想情况下,交叉验证)
猜你喜欢
  • 1970-01-01
  • 2016-07-29
  • 2016-07-02
  • 2018-10-20
  • 1970-01-01
  • 2021-06-17
  • 2021-09-23
  • 2012-05-06
  • 2021-04-09
相关资源
最近更新 更多