7.9. 转换预测目标 (y
)#
这些转换器不打算用于功能,仅用于监督学习目标。另见 回归中转变目标 如果您想转换预测目标以进行学习,但在原始(未转换)空间中评估模型。
7.9.1. 标签二进制化#
7.9.1.1. LabelBinarizer#
LabelBinarizer
是一个实用程序类,用于帮助创建 label indicator matrix 列表中 multiclass 标签::
>>> from sklearn import preprocessing
>>> lb = preprocessing.LabelBinarizer()
>>> lb.fit([1, 2, 6, 4, 2])
LabelBinarizer()
>>> lb.classes_
array([1, 2, 4, 6])
>>> lb.transform([1, 6])
array([[1, 0, 0, 0],
[0, 0, 0, 1]])
使用此格式可以在支持标签指示符矩阵格式的估计器中启用多类分类。
警告
如果您使用的估计器已经支持,则不需要LabelBinarizer multiclass 数据
有关多类分类的更多信息,请参阅 多类分类 .
7.9.1.2. MultiLabelBinarizer#
在 multilabel 学习时,二进制分类任务的联合集用标签二进制指示符数组来表达:每个样本是形状(n_samples,n_classes)的2D阵列的一行,具有二进制值,其中一个(即非零元素)对应于该样本的标签子集。一个数组,例如 np.array([[1, 0, 0], [0, 1, 1], [0, 0, 0]])
代表第一个样本中的标签0,第二个样本中的标签1和2,而第三个样本中没有标签。
将多标签数据生成为标签集列表可能更直观。的 MultiLabelBinarizer
Transformer可用于在标签集合和指示符格式之间进行转换::
>>> from sklearn.preprocessing import MultiLabelBinarizer
>>> y = [[2, 3, 4], [2], [0, 1, 3], [0, 1, 2, 3, 4], [0, 1, 2]]
>>> MultiLabelBinarizer().fit_transform(y)
array([[0, 0, 1, 1, 1],
[0, 0, 1, 0, 0],
[1, 1, 0, 1, 0],
[1, 1, 1, 1, 1],
[1, 1, 1, 0, 0]])
有关多标签分类的更多信息,请参阅 多标签分类 .
7.9.2. 标签编码#
LabelEncoder
是一个实用程序类,用于帮助规范化标签,使其仅包含0和n_classes-1之间的值。这有时对于编写高效的Cython例程很有用。 LabelEncoder
可以使用如下:
>>> from sklearn import preprocessing
>>> le = preprocessing.LabelEncoder()
>>> le.fit([1, 2, 2, 6])
LabelEncoder()
>>> le.classes_
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 = preprocessing.LabelEncoder()
>>> le.fit(["paris", "paris", "tokyo", "amsterdam"])
LabelEncoder()
>>> list(le.classes_)
[np.str_('amsterdam'), np.str_('paris'), np.str_('tokyo')]
>>> le.transform(["tokyo", "tokyo", "paris"])
array([2, 2, 1])
>>> list(le.inverse_transform([2, 2, 1]))
[np.str_('tokyo'), np.str_('tokyo'), np.str_('paris')]