1 介绍LabelEncoder
在训练模型之前,需要对数据进行处理,比如说分类,进行类别编号。
举例:把“男”、“女”编号为“0”和“1”。
2 作用
把 n 个类别编码为 0 ~ n-1 之间的整数(包含0和n - 1)
3 代码举例
- 导包
import numpy as np
import pandas as pd
from sklearn import preprocessing
- 代码
sex = pd.Series(["male", "female", "female", "male", "male"])
encoder = preprocessing.LabelEncoder() #获取一个LabelEncoder
model = encoder.fit(["male", "female"]) #训练LabelEncoder, 把male编码为0,female编码为1
sex = model.transform(sex) #使用训练好的LabelEncoder对原数据进行编码
print(sex)
- 输出
[1 0 0 1 1]
- 总结
使用LabelEncoder
,可以将源数据中的字符串或者是数字,编码成int类型的数字(range, 顺序是0,1,2,3,…)
- 注意
数据中不能包括Nan
值。
一般在读取数据的时候,都是read_csv
之类的方法,遇到空值,则会默认转换为Nan
,所以在读取数据之后,一定要做好isNan
的判断,不然会影响到后序的数据处理。
where_value_nan = np.isnan(values)
values[where_value_nan] = 0
4 代码举例2
- 下面这个例子更加不失一般性
from sklearn import preprocessing
encoder = preprocessing.LabelEncoder() #获取一个LabelEncoder
sex = [1, 2, 3, 'wom', 'wom', '中文', '中文', 2, 'wom'] # 数据集
encoder.fit(sex) #训练LabelEncoder, 把male编码为0,female编码为1
sex = encoder.transform(sex) #使用训练好的LabelEncoder对原数据进行编码
print(sex)
- 输出:
[0 1 2 3 3 4 4 1 3]