【问题标题】:Dataset features Encoding and Scaling数据集特征编码和缩放
【发布时间】:2021-03-09 16:59:01
【问题描述】:

我有一个具有非序数分类特征的数据集。在训练机器学习模型(线性 SVC)之前转换它们(编码 + 缩放)的最佳方法是什么?

我尝试过的事情:

  1. 标签编码 - 这有效。但是缩放没有意义,因为功能中的不同类别没有任何特定顺序。

  2. One-Hot encoding - 一个特征中有数千个独特的类别,这通过创建数千列使 ML 模型变得复杂。

  3. 计数编码 - 我的训练-测试拆分没有训练集中某个特征的所有唯一类别,当我对这些特征进行计数编码时,这会在测试集中引入 NaN。

感谢您的帮助!

【问题讨论】:

    标签: python encoding scikit-learn


    【解决方案1】:

    要解决您在测试集中有一些不在训练集中的唯一值的问题,您可以尝试执行以下操作:

    1. 使用df = train.append(test)合并训练数据集
    2. 应用您之前使用的编码
    3. 使用以下方法将数据集拆分回训练和测试:
    • train = df.head(len(train))

    • test = df.tail(len(test))

    根据我的经验,我可以说 LabelEncoding 和 OneHotEncoding 是编码非序数特征的一些最佳技术。

    希望这会有所帮助:)

    【讨论】:

    • 假设我遵循这个并应用标签编码。我可以将其传递给 ML 模型而不进行任何缩放吗?
    • @VamsiMohanRamineedi。标签编码和 OneHot 编码是针对分类的列进行的,即值不是连续的而是离散的。所以你不需要缩放它们。对于连续列,建议对其进行缩放,以使它们位于同一范围内。是的,一旦你附加了你的测试,你就可以应用你的标签编码将它们拆分回训练和测试并完成。您可以将其传递给您的 ML 模型
    猜你喜欢
    • 2019-03-09
    • 1970-01-01
    • 2019-12-09
    • 2020-05-31
    • 2019-03-21
    • 2017-02-22
    • 2022-11-15
    • 2019-08-10
    • 2021-06-22
    相关资源
    最近更新 更多