4

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

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

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

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

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

在发布之前,我在这里的一篇博文中写过这个。

4

2 回答 2

1

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

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

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

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

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

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

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

于 2016-02-16T19:06:53.833 回答
0

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

在 Github 上拉取请求

sklearn Github 项目中的问题

于 2016-02-16T18:47:53.683 回答