sklearn 中 labelEncoder 的工作

新手上路,请多包涵

假设我有以下输入功能:

 hotel_id = [1, 2, 3, 2, 3]

这是具有数值的分类特征。如果我按原样将其提供给模型,模型会将其视为连续变量,即 2 > 1。

如果我申请 sklearn.labelEncoder() 那么我会得到:

 hotel_id = [0, 1, 2, 1, 2]

那么这个编码特征被认为是连续的还是分类的?如果它被视为连续的,那么 labelEncoder() 有什么用。

PS 我知道一种热编码。但是大约有 100 个 hotel_id,所以不想使用它。谢谢

原文由 Neo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 454
1 个回答

LabelEncoder 是一种编码等级的方法。除了您包含的整数示例之外,请考虑以下示例:

 >>> from sklearn.preprocessing import LabelEncoder
>>> le = LabelEncoder()
>>>
>>> train = ["paris", "paris", "tokyo", "amsterdam"]
>>> test = ["tokyo", "tokyo", "paris"]
>>> le.fit(train).transform(test)
array([2, 2, 1]...)

那么, LabelEncoder 允许我们做的是将有序级别分配给分类数据。 但是,您注意到的是正确的:即 [2, 2, 1] 被视为数字数据。这是使用 OneHotEncoder 虚拟变量(我知道你说过你不希望使用它)的一个很好的候选者。

请注意, LabelEncoder 必须在单热编码之前使用,因为 OneHotEncoder 无法处理分类数据。因此,它经常被用作单热编码的先驱。

或者,它可以将您的目标编码为可用数组。例如,如果 train 是您的分类目标,您将需要 LabelEncoder 将其用作您的 y 变量。

原文由 TayTay 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题