如何将 pandas get_dummies 函数应用于有效数据集?
Posted
技术标签:
【中文标题】如何将 pandas get_dummies 函数应用于有效数据集?【英文标题】:how to apply pandas get_dummies function to valid data set? 【发布时间】:2021-09-21 00:11:12 【问题描述】:我尝试将 pandas get_dummies 函数应用于我的数据集。 问题是类别值的编号与训练集和有效集不匹配。 例如,train set 列有 5 种值。例如:[1、2、3、4、5] 但是,有效集合只有 3 种值。例如:[1、3、5]
当我使用训练数据集制作模型时,正在创建 5 个假人。 例如:dum_1、dum_2、dum_3、dum_4、dum_5
所以,如果我只是对有效数据集使用相同的函数,则只会创建 3 个假人。 例如:dum_1、dum_2、dum_3
无法预测有效数据集以使用我的模型。 如何为火车和有效集合制作相同的假人? (无法连接 2 个数据集。请提出除使用 pd.concat 之外的其他方法)
另外,如果我为有效集合添加新列,我希望它会产生不同的结果。 因为训练集和有效集之间的虚拟序列不匹配。
谢谢。
【问题讨论】:
这能回答你的问题吗? Keep same dummy variable in training and testing data 【参考方案1】:你需要做的就是
-
在验证数据集中创建在训练数据中存在但在验证数据中缺失的列。
missing_cols = [col for col in train.columns if col not in valid.columns]
for col in missing_cols:
valid[col] = 0
-
现在,这些列最终被创建,因此列的顺序将被更改。因此,在下一步中,我们将重新排列列,如下所示:
valid = valid[[train.columns]]
【讨论】:
以上是关于如何将 pandas get_dummies 函数应用于有效数据集?的主要内容,如果未能解决你的问题,请参考以下文章
如何让 pandas get_dummies 发出 N-1 个变量以避免共线性?
pandas get_dummies 如何记住哪个值变成了哪个新类别? [复制]
特征提取pd.get_dummies() 详解(One-Hot Encoding)
Python Pandas:将 2,000,000 个 DataFrame 行转换为二进制矩阵 (pd.get_dummies()) 而不会出现内存错误?