Scikit-learn 的sklearn.preprocessing.LabelEncoder
在机器学习中,很多算法都需要输入数字类型的数据,但实际上我们很多时候手头的数据集会是非数字型的数据,比如性别、颜色等等。我们需要把这些非数字型的数据转化为数字类型。这时候 sklearn 中的 sklearn.preprocessing.LabelEncoder 函数就非常有用了。
函数作用
sklearn.preprocessing.LabelEncoder 的作用就是将非数字型的数据转换成数字型的数据,这个过程也叫做 Label Encoding。可以将标签(label)赋予不同的分类,搜索引擎将根据用户选择的标签,返回相关文章,以此达到分类查找的目的。
函数调用
sklearn.preprocessing.LabelEncoder() 的调用方式如下所示:
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
使用方法
- 首先导入所需的包
from sklearn.preprocessing import LabelEncoder
import numpy as np
import pandas as pd
- 创建数据集
data = pd.DataFrame({'color': ['red', 'green', 'blue', 'yellow', 'green', 'blue']})
- 创建一个 LabelEncoder 对象,并对颜色数据进行编码
le = LabelEncoder()
data['color_label'] = le.fit_transform(data['color'])
- 查看编码后的结果
print(data)
输出结果:
color color_label
0 red 2
1 green 1
2 blue 0
3 yellow 4
4 green 1
5 blue 0
从结果可以看到,原本颜色数据中的字符串都被对应成了数字,这些数字的大小代表了这些字符串在颜色数据中的顺序。这就是 LabelEncoder 的作用和效果。
实例分析
下面通过两个实例分别说明 LabelEncoder 函数的使用方法。
实例一:Iris数据集中的目标变量
Iris 数据集是一个常用的分类数据集,其中包括 150 条记录,分为3种不同的鸢尾花,即 Setosa(山鸢尾花)、Versicolour(杂色鸢尾花)和 Virginica(维尔吉妮卡鸢尾花),每条数据有四个特征:萼片长度、萼片宽度、花瓣长度以及花瓣宽度。其中可以将鸢尾花的种类看作是目标变量,需要将其进行 Label Encoding。以下为对 Iris 数据集的目标变量进行 Label Encoding 的代码:
from sklearn.datasets import load_iris
from sklearn.preprocessing import LabelEncoder
iris = load_iris()
y = iris.target
le = LabelEncoder()
y_encoded = le.fit_transform(y)
实例二:sklearn 官网示例
sklearn 官网提供的一个示例是将文本数据作为模型的输入,但模型输入必须为数值数组,因此需要对文本数据进行编码。以下代码即是一个将文本数据转化为数值数组的示例,并将结果返回到 DataFrame 格式中:
import pandas as pd
from sklearn.preprocessing import LabelEncoder
# create sample data
df = pd.DataFrame({
'pets': ['cat', 'dog', 'cat', 'monkey', 'dog', 'cat'],
'location': ['San Francisco', 'New York', 'New York', 'San Francisco', 'San Francisco', 'New York'],
'salary': [90, 24, 44, 27, 32, 64]
})
# create Label Encoder and encode categorical columns
le = LabelEncoder()
df['pets_encoded'] = le.fit_transform(df['pets'])
df['location_encoded'] = le.fit_transform(df['location'])
# print the result
print(df)
以上即为 LabelEncoder 函数的使用方法和相关实例,通过 LabelEncoder 函数的编写,我们可以很方便地将非数字型的数据转换成数字型的数据,为进一步的机器学习流程打下基础。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解 Scikit-learn 的 preprocessing.LabelEncoder函数:标签编码 - Python技术站