6.9. Transformación del objetivo de predicción (y)

Estos son transformadores que no están destinados a ser utilizados en características, solo en objetivos de aprendizaje supervisado. Consulta también Transformación del objetivo en regresión si deseas transformar el objetivo de predicción para el aprendizaje, pero evalúa el modelo en el espacio original (sin transformar).

6.9.1. Binarización de etiquetas

6.9.1.1. LabelBinarizer

LabelBinarizer es una clase de utilidad que ayuda a crear una label indicator matrix de una lista de etiquetas multiclass:

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

El uso de este formato puede permitir la clasificación multiclase en estimadores que admiten el formato de matriz indicatriz de etiqueta.

Advertencia

LabelBinarizer no es necesario si estás usando un estimador que ya soporta datos multiclase.

Para más información sobre clasificación multiclase, consulta Clasificación multiclase.

6.9.1.2. MultiLabelBinarizer

En el aprendizaje multietiqueta, el conjunto de unión de tareas de clasificación binaria se expresa con un arreglo de indicadores binarios de etiquetas: cada muestra es una fila de un arreglo 2d de forma (n_muestras, n_clases) con valores binarios donde el uno, es decir, los elementos distintos de cero, corresponden al subconjunto de etiquetas para esa muestra. Un arreglo como np.array([[1, 0, 0], [0, 1, 1], [0, 0, 0]]) representa la etiqueta 0 en la primera muestra, las etiquetas 1 y 2 en la segunda muestra, y ninguna etiqueta en la tercera muestra.

Producir datos multietiqueta como una lista de conjuntos de etiquetas puede ser más intuitivo. El transformador MultiLabelBinarizer puede utilizarse para convertir entre una colección de conjuntos de etiquetas y el formato indicador:

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

Para más información sobre clasificación multietiqueta, consulta Clasificación multietiqueta.

6.9.2. Codificación de etiquetas

LabelEncoder es una clase de utilidad para ayudar a normalizar las etiquetas de manera que sólo contengan valores entre 0 y n_clases-1. Esto a veces es útil para escribir rutinas eficientes de Cython. LabelEncoder puede utilizarse como sigue:

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

También puede utilizarse para transformar etiquetas no numéricas (siempre que sean hashables y comparables) a etiquetas numéricas:

>>> 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']