如何在Python中为顺序数据编码伪变量,以便始终保持相同的顺序?

2024-09-29 23:32:54 发布

您现在位置:Python中文网/ 问答频道 /正文

一个简单的问题,实际上,我有一个数据集太大,无法保存在内存中,因此必须加载它,然后依次对其执行机器学习。我的一个特性是分类的,我想把它转换成一个伪变量,但我有两个问题:

1)拼接过程中并非所有类别都存在。因此,我想添加额外的类别,即使它们没有在当前切片中显示

2)柱必须保持与以前相同的顺序



这是问题的一个例子:

In[1]: import pandas as pd
        splice1 = pd.Series(list('bdcccb'))
Out[1]: 0    b
        1    d
        2    c
        3    c
        4    c
        5    b 
        dtype: object

In[2]: splice2 = pd.Series(list('accd'))
Out[2]: 0    a
        1    c
        2    c
        3    d
        dtype: object

In[3]: splice1_dummy = pd.get_dummies(splice1)
Out[3]:     b   c   d
          0 1   0   0
          1 0   0   1
          2 0   1   0
          3 0   1   0
          4 0   1   0
          5 1   0   0

In[4]: splice2_dummy = pd.get_dummies(splice2)
Out[4]:     a   c   d
          0 1   0   0
          1 0   1   0
          2 0   1   0
          3 0   0   1

编辑:如何处理N-1规则。必须删除一个伪变量,但要删除哪一个?每一个新的拼接都会包含不同的分类变量


Tags: 数据ingetobject分类out类别list
1条回答
网友
1楼 · 发布于 2024-09-29 23:32:54

因此,如果你按照你想要的顺序传递类别,那么get\u dummies会保持它。代码显示了它是如何完成的

In[1]: from pandas.api.types import CategoricalDtype

       splice1 = pd.Series(list('bdcccb'))
       splice1 = splice1.astype(CategoricalDtype(categories=['a','c','b','d']))

       splice2 = pd.Series(list('accd'))
       splice2 = splice2.astype(CategoricalDtype(categories=['a','c','b','d']))

In[2]: splice1_dummy = pd.get_dummies(splice1)
Out[2]:     a   c   b   d
        0   0   0   1   0
        1   0   0   0   1
        2   0   1   0   0
        3   0   1   0   0
        4   0   1   0   0
        5   0   0   1   0

In[3]:  splice2_dummy = pd.get_dummies(splice2)
Out[3]:     a   c   b   d
        0   1   0   0   0
        1   0   1   0   0
        2   0   1   0   0
        3   0   0   0   1

尽管如此,我仍然没有解决要删除哪个变量的问题

相关问题 更多 >

    热门问题