Python 如何对每列具有多个值的功能进行编码?需要多指令向量机吗?

Python 如何对每列具有多个值的功能进行编码?需要多指令向量机吗?,python,scikit-learn,feature-extraction,dictvectorizer,one-hot-encoding,Python,Scikit Learn,Feature Extraction,Dictvectorizer,One Hot Encoding,我正在对sklearn中的一些功能进行矢量化,我遇到了一个问题。如果您的数据可以被编码到每个项目的一个dict键中,DictVectorizer工作得很好。如果您的项目可以具有同一列的两个或多个值,该怎么办?例如,DictVectorizer可以很好地处理以下项目: {'a': 'b', 'b': 'c'} 但是像这样,每列有一个以上的值呢 {'a': ['b','c'], 'b': 'd'} 一个热编码的策略仍然适用,您只需要两个a列…a=b和a=c。据我所知,没有这样的矢量器存在!在这种

我正在对sklearn中的一些功能进行矢量化,我遇到了一个问题。如果您的数据可以被编码到每个项目的一个dict键中,DictVectorizer工作得很好。如果您的项目可以具有同一列的两个或多个值,该怎么办?例如,DictVectorizer可以很好地处理以下项目:

{'a': 'b', 'b': 'c'}
但是像这样,每列有一个以上的值呢

{'a': ['b','c'], 'b': 'd'}
一个热编码的策略仍然适用,您只需要两个a列…a=b和a=c。据我所知,没有这样的矢量器存在!在这种情况下,我们该怎么办?我需要创建自己的多目录向量器吗


在发布之前,我在一篇文章中写到了这一点。

DictVectorizer无法处理每个键的多个值,因此我将此功能添加到它中。如果接受拉动,这将是sklearn的一部分。如果没有,我将在MultiDictVectorizer中为DictVectorizer子类,并为这个类发布一个包


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

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

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

  • 每次取一个值复制样本

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

  • 当然,这在很大程度上取决于问题的背景(案例2:用不同的表现形式“复制”样本是否正确?案例1:概念上是否可以接受该特性的另一个新值?)。例如,我甚至不知道多值特征是否对应于
    N/a
    情况

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