【发布时间】:2019-03-13 18:06:28
【问题描述】:
在大多数学术示例中,我们曾经使用get_dummies() 或OneHotEncoding() 转换分类特征。假设我想使用 Country 作为特征,并且在数据集中我们有 100 个独特的国家。当我们在国家/地区应用 get_dummies() 或 OneHotEncoding() 时,我们将获得 100 个列,模型将使用 100 个国家/地区列 + 其他特征进行训练。
可以说,我们已将此模型部署到生产中,但我们只收到了 10 个国家/地区。当我们使用get_dummies() 或OneHotEncoding() 对数据进行预处理时,模型将无法进行预测,因为“模型训练的特征数量与传递的特征不匹配”,因为我们正在传递 10 个国家/地区列+其他特征。
你能帮我理解如何处理这种情况吗?如何处理多列中的大量分类变量可以在模型构建中进行预处理。
【问题讨论】:
-
重点是您获得了相同的功能,或者能够在生产/测试期间弥补相同的功能。在测试时,您不仅要像在训练一样执行这些步骤,还要执行这些步骤以确保您得到与训练完全匹配的东西。只要这 10 个国家/地区是 100 个国家/地区的子集,您始终可以将其他 99 个国家/地区填充为 0,将 1 个国家/地区填充为 1,以获得您的 100 个标签。
-
这意味着如果这 10 个国家是 100 个国家的子集,那么它们在预测中不会有任何问题。
-
是的。这是你的问题还是不是?这 10 个国家是子集吗?
-
是的,这 10 个国家是子集,我只是想知道这是否可行。我会运行我的模型,看看它是否顺利。非常感谢。
-
@ParitoshSingh - 我还有一个查询,假设我做了 OneHotEncoding,它将我的一个分类列转换为另外 10 个具有二进制值的列。现在我将在这个 OneHotEncoded 数据上训练和测试我的模型。现在如果我想传递一个新数据,我是否需要先将这个新数据转换为 OneHotEncoding,然后再让我的模型适应它??