- 类 LabelEncoder
- 类属性及类方法
- 示例
- 用法
- 用于大型数据集
 
类 LabelEncoder
LabelEncoder 是 scikit-learn 中的一个预处理工具,用于将类别变量(例如字符串标签或离散的整数标签)转换为整数。
类 LabelEncoder 在包 sklearn.preprocessing.LabelEncoder 中,使用  0 0 0 到  n _ c l a s s e s − 1 n\_classes-1 n_classes−1 之间的值对目标标签进行编码。
此转换器应用于对目标值(即 y y y)进行编码,而不是对输入 x x x 进行编码。
OrdinalEncoder:使用序数编码方案对分类特征进行编码。
OneHotEncoder:将分类特征编码为独热数字数组。
类属性及类方法
类属性:classes_ 保存每个类别的标签。
主要类方法:
- fit(y):
- fit方法用于拟合(训练)一个- LabelEncoder对象,以适应给定的类别数据 y y y。
- 在拟合过程中,LabelEncoder会计算类别的唯一值,并将其映射到整数标签。
- 例如,如果  y y y 是 [1, 2, 2, 6],fit方法会计算出唯一的类别[1, 2, 6]。
- transform(y):
- transform方法用于将给定的类别数据 y y y 转换为整数标签。
- 它根据之前拟合的 LabelEncoder对象,将类别变量映射到整数。
- 例如,如果  y y y 是 [1, 1, 2, 6],transform方法会将其转换为[0, 0, 1, 2]。
- fit_transform(y):
- fit_transform方法是- fit和- transform的组合。
- 它先拟合一个 LabelEncoder对象,然后将给定的类别数据 y y y 转换为整数标签。
- inverse_transform(y):
- 用于将数字编码转换回原始的分类变量。
示例
首先,准备好数据并使用 LabelEncoder 对数据集进行编码。
from sklearn.preprocessing import LabelEncoderdata = ['小猫', '小猫', '小狗', '小狗', '兔子', '兔子']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 LabelEncoderle = 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]),因为已经在训练集上学习了类别映射,不需要再次拟合。