Spec-Zone.ru › scikit-learn

8.9. Преобразование целевой переменной прогнозирования (y)

Эти преобразователи предназначены не для использования с признаками, а только с целевыми переменными в обучении с учителем. См. также раздел Преобразование целевой переменной в регрессии, если вы хотите преобразовать целевую переменную для обучения, но оценивать модель в исходном (непреобразованном) пространстве.

8.9.1. Бинаризация меток

8.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 не нужен, если вы используете оцениватель, который уже поддерживает данные многоклассовой классификации.

Дополнительные сведения о многоклассовой классификации см. в разделе Многоклассовая классификация.

8.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]])

Дополнительные сведения о многометочной классификации см. в разделе Многометочная классификация.

8.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')]

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/preprocessing_targets.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API