简介
在机器学习中,在训练模型之前通常需要对预测目标进行转换。这可能包括将多类标签转换为二元指示矩阵,或将非数字标签编码为数字标签等任务。
在本实验中,我们将探索 scikit-learn 中 sklearn.preprocessing 模块提供的各种用于转换预测目标的技术。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到 笔记本 标签页,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会立即为你解决问题。
标签二值化
标签二值化是将多类标签转换为二元指示矩阵的过程。可以使用 LabelBinarizer 类来实现。
from sklearn import preprocessing
## 创建一个 LabelBinarizer 实例
lb = preprocessing.LabelBinarizer()
## 在多类标签列表上拟合 LabelBinarizer
lb.fit([1, 2, 6, 4, 2])
## 获取 LabelBinarizer 学习到的类别
lb.classes_
## 将多类标签列表转换为二元指示矩阵
lb.transform([1, 6])
多标签二值化
多标签二值化是将标签集合的集合转换为指示格式的过程。这可以使用 MultiLabelBinarizer 类来实现。
from sklearn.preprocessing import MultiLabelBinarizer
## 定义一个标签集合的列表
y = [[2, 3, 4], [2], [0, 1, 3], [0, 1, 2, 3, 4], [0, 1, 2]]
## 创建一个 MultiLabelBinarizer 实例并对标签集合列表进行拟合和转换
MultiLabelBinarizer().fit_transform(y)
标签编码
标签编码是将非数字标签转换为数字标签的过程。这可以使用 LabelEncoder 类来实现。
from sklearn import preprocessing
## 创建一个 LabelEncoder 实例
le = preprocessing.LabelEncoder()
## 在非数字标签列表上拟合 LabelEncoder
le.fit(["paris", "paris", "tokyo", "amsterdam"])
## 获取 LabelEncoder 学习到的类别
list(le.classes_)
## 将非数字标签列表转换为数字标签
le.transform(["tokyo", "tokyo", "paris"])
## 将数字标签反向转换回非数字标签
list(le.inverse_transform([2, 2, 1]))
总结
在本实验中,我们学习了如何使用 scikit-learn 中 sklearn.preprocessing 模块提供的各种技术来转换预测目标。这些技术包括标签二值化、多标签二值化和标签编码。