python - 如何在Python中对顺序数据的虚拟变量进行编码,以便始终保持相同的顺序?

标签 python sequential one-hot-encoding dummy-variable

这确实是一个简单的问题,我有一个数据集太大,无法保存在内存中,因此必须加载它,然后按顺序对其执行机器学习。我的功能之一是分类,我想将其转换为虚拟变量,但我有两个问题:

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 规则。必须删除一个虚拟变量,但是删除哪一个呢?每个新的拼接都会保存不同的分类变量。

最佳答案

因此,如果您按照所需的确切顺序传递类别,get_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

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

关于python - 如何在Python中对顺序数据的虚拟变量进行编码,以便始终保持相同的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59079773/

相关文章:

python - One-hot编码后的预测

python - 如何在 Scikit-learn 中获取 OneHotEncoder 的维度数

python - 如何创建单词的字谜?

python - 在神经网络 Keras 序列模型中获取 0 或 1 作为概率值

javascript - 在动画回调完成之前触发一个 jquery 循环进行迭代?

python - LabelEncoder().fit_transform 给我负值?

python - 遍历构造函数的参数

python - 根据条件删除 pandas DataFrame 中的重复行

python - 在列表中找到最小的唯一元素

batch-file - 按顺序运行批处理文件