在推理时创建虚拟变量以匹配拟合模型

数据挖掘 scikit-学习 熊猫
2021-09-23 14:56:16

我使用 Sklearn 和 pandas 作为主要工具构建了一个机器学习分类器。现在,模型的输入特征之一是国家(字母国家代码,如美国)。我已经使用该pd.get_dummies函数拟合了一个模型。

现在我想对数据进行推断,但在过去的几个月里,有几个国家没有出现在我的数据集中,因此该pd.get_dummies函数与拟合模型不一致。

这个怎么处理?

1个回答

我认为这个问题的答案将解决您的问题。

import pandas as pd

train = pd.DataFrame(data = [['a', 123, 'ab'], ['b', 234, 'bc']],
                     columns=['col1', 'col2', 'col3'])
test = pd.DataFrame(data = [['c', 345, 'ab'], ['b', 456, 'ab']],
                     columns=['col1', 'col2', 'col3'])

train_objs_num = len(train)
dataset = pd.concat(objs=[train, test], axis=0)
dataset_preprocessed = pd.get_dummies(dataset)
train_preprocessed = dataset_preprocessed[:train_objs_num]
test_preprocessed = dataset_preprocessed[train_objs_num:]

如果这没有帮助,一个简单的解决方案是为缺少新数据集的每个国家添加全为零的列。这将为您提供分类器所期望的正确数据形状。