【问题标题】:How can I encode features with more than one value per column? MultiDictVectorizer needed?如何对每列具有多个值的特征进行编码?需要 MultiDictVectorizer?
【发布时间】:2016-05-27 01:29:13
【问题描述】:

我正在对 sklearn 中的一些功能进行矢量化处理,但遇到了问题。如果您的数据可以被编码为每个项目的一个字典键,则 DictVectorizer 效果很好。如果您的项目可以具有同一列的两个或多个值怎么办?例如,DictVectorizer 在这样的项目上运行良好:

{'a': 'b', 'b': 'c'}

但是像这样的东西,每列有多个值呢?

{'a': ['b','c'], 'b': 'd'}

one-hot-encoding 的策略仍然可以应用,您只需要两个 a 列……a=b 和 a=c。据我所知,不存在这样的矢量化器!在这种情况下应该怎么做?我需要创建自己的 MultiDictVectorizer 吗?

在发帖之前,我在blog post 上写过这个。

【问题讨论】:

    标签: python scikit-learn feature-extraction dictvectorizer one-hot-encoding


    【解决方案1】:

    对于这种情况,至少有两种可能的快速解决方案:

    1. 创建一个新值,表示有两个聚合值的可能性

      {'a': 'bc', 'b': 'd'} 或给它另一个名字,即'bc'-->'e'

    2. 每次取其中一个值时复制样本

      {'a': 'b', 'b': 'd'}{'a': 'c', 'b': 'd'}

    但当然,这在很大程度上取决于您的问题的上下文(案例 2:“复制”具有不同表现形式的样本是否正确?案例 1:在概念上是否可以接受该功能的另一个新值?)。例如,我什至不知道该多值特征是否对应于N/A 情况。

    我已经看过你的 github 提案,所以我知道这不是你想要的,但以防万一它可以为你节省精力。

    【讨论】:

      【解决方案2】:

      DictVectorizer 无法处理每个键的多个值,因此我正在为其添加此功能。如果拉取被接受,这将是 sklearn 的一部分。如果没有,我将在 MultiDictVectorizer 中继承 DictVectorizer 并为该类发布一个包。

      Pull request at Github

      Issue in sklearn Github project

      【讨论】:

        猜你喜欢
        • 2022-08-04
        • 2020-01-05
        • 2019-11-21
        • 2022-01-20
        • 2019-04-29
        • 2019-05-30
        • 1970-01-01
        • 2017-06-08
        • 2017-01-07
        相关资源
        最近更新 更多