Neo*_*Neo 8 python machine-learning scikit-learn categorical-data
说我有以下输入功能:
hotel_id = [1, 2, 3, 2, 3]
Run Code Online (Sandbox Code Playgroud)
这是具有数值的分类特征.如果我按原样将它交给模型,模型会将其视为连续变量,即2> 1.
如果我申请,sklearn.labelEncoder()我会得到:
hotel_id = [0, 1, 2, 1, 2]
Run Code Online (Sandbox Code Playgroud)
那么这个编码特征被认为是连续的还是绝对的?如果它被视为连续,那么使用labelEncoder().
PS我知道一个热门编码.但是大约有100个hotel_ids所以不想使用它.谢谢
Tgs*_*591 13
这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]...)
Run Code Online (Sandbox Code Playgroud)
那么,LabelEncoder允许我们做的是将序数级别分配给分类数据.但是,您所注意到的是正确的:即,将[2, 2, 1]其视为数字数据.这是使用OneHotEncoder虚拟变量的一个很好的候选者(我知道你说你希望不使用它).
请注意,LabelEncoder必须在单热编码之前使用,因为OneHotEncoder无法处理分类数据.因此,它经常用作单热编码的前传.
或者,它可以将目标编码为可用的数组.例如,如果train您的目标是分类,则需要LabelEncoder将其用作y变量.