.. currentmodule:: sklearn.preprocessing .. _preprocessing_targets: ========================================== 转换预测目标( ``y`` ) ========================================== 这些转换器仅用于监督学习目标,不适用于特征。如果你想在学习过程中转换预测目标,但在原始(未转换)空间中评估模型,请参阅 :ref:`transformed_target_regressor` 。 标签二值化 ================== LabelBinarizer -------------- :class:`LabelBinarizer` 是一个实用类,用于从多类标签列表创建 :term:`标签指示矩阵` :: >>> 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]]) 使用这种格式可以在支持标签指示矩阵格式的估计器中启用多类分类。 .. warning:: LabelBinarizer 在已经支持 :term:`多类` 数据的估计器中是不需要的。 有关多类分类的更多信息,请参阅 :ref:`multiclass_classification` 。 MultiLabelBinarizer ------------------- 在 :term:`多标签` 学习中,联合的二元分类任务集通过标签二值指示数组表示:每个样本是形状为 (n_samples, n_classes) 的二维数组中的一行,其中二值元素表示该样本的标签子集。例如, ``np.array([[1, 0, 0], [0, 1, 1], [0, 0, 0]])`` 表示第一个样本的标签 0,第二个样本的标签 1 和 2,以及第三个样本没有标签。 以标签集合列表的形式生成多标签数据可能更直观。:class:`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]]) 有关多标签分类的更多信息,请参阅 :ref:`多标签分类` 。 标签编码 ======== :class:`LabelEncoder` 是一个实用类,用于帮助标准化标签,使其仅包含 0 到 n_classes-1 之间的值。这在编写高效的 Cython 程序时有时很有用。 :class:`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_) ['amsterdam', 'paris', 'tokyo'] >>> le.transform(["tokyo", "tokyo", "paris"]) array([2, 2, 1]) >>> list(le.inverse_transform([2, 2, 1])) ['tokyo', 'tokyo', 'paris']