7.9. Преобразование целевой переменной (y)#
Это преобразователи, которые не предназначены для использования с признаками, только с целевыми переменными обучения с учителем. См. также Преобразование целевой переменной в регрессии если вы хотите преобразовать целевую переменную для обучения, но оценить модель в исходном (непреобразованном) пространстве.
7.9.1. Бинаризация меток#
7.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 не нужен, если вы используете оценщик, который уже поддерживает многоклассовый data.
Для получения дополнительной информации о многоклассовой классификации обратитесь к Многоклассовая классификация.
7.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]])
Для получения дополнительной информации о многометочной классификации обратитесь к Многометочная классификация.
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')]