详解 Scikit-learn 的 preprocessing.LabelEncoder函数:标签编码

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()

使用方法

  1. 首先导入所需的包
from sklearn.preprocessing import LabelEncoder
import numpy as np
import pandas as pd
  1. 创建数据集
data = pd.DataFrame({'color': ['red', 'green', 'blue', 'yellow', 'green', 'blue']})
  1. 创建一个 LabelEncoder 对象,并对颜色数据进行编码
le = LabelEncoder()
data['color_label'] = le.fit_transform(data['color'])
  1. 查看编码后的结果
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技术站

(0)
上一篇 2023年3月30日
下一篇 2023年3月30日

相关文章

合作推广
合作推广
分享本页
返回顶部