5.9. 预测目标 (y) 的转换

5.9. 预测目标 (y) 的转换

校验者: @FontTian@numpy翻译者: @程威

本章要介绍的这些变换器不是被用于特征的,而是只被用于变换监督学习的目标。 如果你希望变换预测目标以进行学习,但是在原始空间中评估模型,请参考回归中的目标转换

5.9.1. 标签二值化

LabelBinarizer 是一个用来从多类别列表创建标签矩阵的工具类:

  1. >>> from sklearn import preprocessing
  2. >>> lb = preprocessing.LabelBinarizer()
  3. >>> lb.fit([1, 2, 6, 4, 2])
  4. LabelBinarizer(neg_label=0, pos_label=1, sparse_output=False)
  5. >>> lb.classes_
  6. array([1, 2, 4, 6])
  7. >>> lb.transform([1, 6])
  8. array([[1, 0, 0, 0],
  9. [0, 0, 0, 1]])

对于多类别是实例,可以使用 MultiLabelBinarizer:

  1. >>> lb = preprocessing.MultiLabelBinarizer()
  2. >>> lb.fit_transform([(1, 2), (3,)])
  3. array([[1, 1, 0],
  4. [0, 0, 1]])
  5. >>> lb.classes_
  6. array([1, 2, 3])

5.9.2. 标签编码

LabelEncoder 是一个可以用来将标签规范化的工具类,它可以将标签的编码值范围限定在[0,n_classes-1]. 这在编写高效的Cython程序时是非常有用的. LabelEncoder 可以如下使用:

  1. >>> from sklearn import preprocessing
  2. >>> le = preprocessing.LabelEncoder()
  3. >>> le.fit([1, 2, 2, 6])
  4. LabelEncoder()
  5. >>> le.classes_
  6. array([1, 2, 6])
  7. >>> le.transform([1, 1, 2, 6])
  8. array([0, 0, 1, 2])
  9. >>> le.inverse_transform([0, 0, 1, 2])
  10. array([1, 1, 2, 6])

当然,它也可以用于非数值型标签的编码转换成数值标签(只要它们是可哈希并且可比较的):

  1. >>> le = preprocessing.LabelEncoder()
  2. >>> le.fit(["paris", "paris", "tokyo", "amsterdam"])
  3. LabelEncoder()
  4. >>> list(le.classes_)
  5. ['amsterdam', 'paris', 'tokyo']
  6. >>> le.transform(["tokyo", "tokyo", "paris"])
  7. array([2, 2, 1])
  8. >>> list(le.inverse_transform([2, 2, 1]))
  9. ['tokyo', 'tokyo', 'paris']