python - labelEncoder在sklearn中的工作

标签 python machine-learning scikit-learn categorical-data

假设我有以下输入功能:

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

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

如果我应用sklearn.labelEncoder(),那么我将得到:

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

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

附注我知道一种热门编码。但大约有 100 个 hotel_ids,所以不想使用它。 谢谢

最佳答案

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 必须在 one-hot 编码之前使用,因为 OneHotEncoder 无法处理分类数据。因此,它经常被用作 one-hot 编码的前体。

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

关于python - labelEncoder在sklearn中的工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41773751/

相关文章:

machine-learning - pytorch中的自定义交叉熵损失

python - [scikit 学习] : Anomaly Detection - Alternative for OneClassSVM

python - python/scikit-learn 中距离计算的稀疏实现

python - Python 3x 的最佳机器学习包?

Python Cassandra 驱动程序仅插入一条记录

python - 从 python 中的列表继承时出现奇怪的行为

python - 如果 DST 更改的数据帧频率低于 1 小时,则会出现 pytz 错误 [多索引 pandas]

python - 拟合神经网络时出现 UnboundLocalError - TensorFlow 错误?

python - 拟合后手动计算的损失比上一个时期的损失高一个数量级

machine-learning - 如何使用多类分类通过 scikit-learn 访问每个类的支持量?