6.9. Преобразование целевой переменной (y)
Это преобразователи, которые не предназначены для использования с признаками, только с целевыми переменными контролируемого обучения. Также см. Преобразование целевой переменной в регрессии, если вы хотите преобразовать целевую переменную для обучения, но оценить модель в исходном (непреобразованном) пространстве.
6.9.1. Бинаризация меток
6.9.1.1. LabelBinarizer
LabelBinarizer — это утилитарный класс, который помогает создать матрицу индикаторов меток из списка многоклассовых меток:
>>> 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 не нужен, если вы используете оценщик, который уже поддерживает многоклассовые данные.
Для получения дополнительной информации о многоклассовой классификации обратитесь к Многоклассовой классификации.
6.9.1.2. MultiLabelBinarizer
В многометковом обучении совокупность задач бинарной классификации выражается с помощью двумерного массива бинарных индикаторов меток: каждый образец представлен одной строкой двумерного массива формы (n_samples, n_classes) с бинарными значениями, где единица (ненулевое значение) соответствует подмножеству меток для этого образца. Массив, такой как np.array([[1, 0, 0], [0, 1, 1], [0, 0, 0]]), представляет метку 0 в первом образце, метки 1 и 2 во втором образце и отсутствие меток в третьем образце.
Более интуитивно может быть получение многометковых данных как списка наборов меток. Преобразователь MultiLabelBinarizer может использоваться для преобразования между набором наборов меток и индикаторным форматом:
>>> 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]])
Для получения дополнительной информации о многометковой классификации обратитесь к Многометковой классификации.
6.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_) ['amsterdam', 'paris', 'tokyo'] >>> le.transform(["tokyo", "tokyo", "paris"]) array([2, 2, 1]) >>> list(le.inverse_transform([2, 2, 1])) ['tokyo', 'tokyo', 'paris']
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/preprocessing_targets.html