LabelEncoder 类属性类方法及用法

类 LabelEncoder

LabelEncoderscikit-learn 中的一个预处理工具,用于将类别变量(例如字符串标签或离散的整数标签)转换为整数。

LabelEncoder 在包 sklearn.preprocessing.LabelEncoder 中,使用 0 0 0 n _ c l a s s e s − 1 n\_classes-1 n_classes1 之间的值对目标标签进行编码。

此转换器应用于对目标值(即 y y y)进行编码,而不是对输入 x x x 进行编码。

  • OrdinalEncoder:使用序数编码方案对分类特征进行编码。
  • OneHotEncoder:将分类特征编码为独热数字数组。

类属性及类方法

类属性:classes_ 保存每个类别的标签。

主要类方法:

  1. fit(y)
  • fit 方法用于拟合(训练)一个 LabelEncoder 对象,以适应给定的类别数据 y y y
  • 在拟合过程中,LabelEncoder 会计算类别的唯一值,并将其映射到整数标签。
  • 例如,如果 y y y[1, 2, 2, 6]fit 方法会计算出唯一的类别 [1, 2, 6]
  1. transform(y)
  • transform 方法用于将给定的类别数据 y y y 转换为整数标签。
  • 它根据之前拟合的 LabelEncoder 对象,将类别变量映射到整数。
  • 例如,如果 y y y[1, 1, 2, 6]transform 方法会将其转换为 [0, 0, 1, 2]
  1. fit_transform(y)
  • fit_transform 方法是 fittransform 的组合。
  • 它先拟合一个 LabelEncoder 对象,然后将给定的类别数据 y y y 转换为整数标签。
  1. inverse_transform(y)
  • 用于将数字编码转换回原始的分类变量。

示例

首先,准备好数据并使用 LabelEncoder 对数据集进行编码。

from sklearn.preprocessing import LabelEncoder

data = ['小猫', '小猫', '小狗', '小狗', '兔子', '兔子']

le = preprocessing.LabelEncoder()
encoded_data = le.fit_transform(data)
print(encoded_data)  # 输出:[0, 0, 1, 1, 2, 2]

使用 inverse_transform 方法,可以根据编码后的类别反向推导出编码前对应的原始标签:

print(le.inverse_transform([0, 1, 2]))  # 输出:['小猫', '小狗', '兔子']

用法

LabelEncoder 可用于规范化标签。

>>> from sklearn.preprocessing import LabelEncoder
>>> le = LabelEncoder() # 创建一个LabelEncoder对象
>>> le.fit([1, 2, 2, 6]) # 将编码器拟合到给定的类别
LableEncoder()
>>> le.classes_ # 显示拟合后的类别(unique)
array([1, 2, 6])
>>> le.transform([1, 1, 2, 6]) # 将给定的类别转换为整数
array([0, 0, 1, 2]...)
>>> le.inverse_transform([0, 0, 1, 2]) # 将整数逆转换回原始类别
array([1, 1, 2, 6])

它还可用于将非数字标签(只要它们是可散列和可比较的)转换为数字标签。

>>> le = LabelEncoder()
>>> le.fit(["paris", "paris", "tokyo", "amsterdam"])
LabelEncoder()
>>> list(le.classes_)
['amsterdam', 'paris', 'tokyo']
>>> le.transform(["tokyo", "tokyo", "paris"]) # Transform Categories Into Integers
array([2, 2, 1]...)
>>> list(le.inverse_transform([2, 2, 1])) # Transform Integers Into Categories
['tokyo', 'tokyo', 'paris']

用于大型数据集

LableEncoder 用于数据预处理,将分类变量转换为数值编码。

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
for column in train.columns:
    if train[column].dtype == 'object':
        train[column] = le.fit_transform(train[column])
        test[column] = le.transform(test[column])

遍历 train 数据集中的每一列,对于每一列,检查它的数据类型是否为 object,即是否为字符串或其他非数值类型。

如果是分类变量,执行以下操作:

  • 使用 le.fit_transform(train[column]) 将该列的值进行数值编码。fit_transform 方法会学习该列的不同类别,并将每个类别映射到一个唯一的整数标签。这样,原本的字符串类别就被转换成了整数。
  • 然后,对 test 数据集中相应的列执行相同的操作,但是这里只使用 le.transform(test[column]),因为已经在训练集上学习了类别映射,不需要再次拟合。
  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一杯水果茶!

谢谢你的水果茶啦~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值