np-where y LabelEncoder: convertir una variable booleana en numérica

Autor: | Última modificación: 16 de abril de 2024 | Tiempo de Lectura: 2 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

np-where y LabelEncoder son funciones que permiten transformar una variable no numérica en numérica. En nuestro caso, utilizaremos np-where y LabelEncoder para convertir una variable booleana en numérica. Esta labor se realizará en un dataset sobre cáncer de mama que posee 31 variables, de las cuales todas son numéricas, exceptuando una: diagnosis.

np-where y LabelEncoder: conversión de variables

Tenemos, por tanto, las siguientes variables:

np.where y LabelEncoder

Veamos cómo sería el proceso de transformación de la variable diagnosis, con tipo «object», por medio de np-where y LabelEncoder:

#np-where y LabelEncoder
#opción 1. np.where
datal ['label_opcion1'] = np.where (data ['diagnosis'] = 'M', 1, 0)

# opción 2. LabelEncoder
from sklearn import preprocessing
le = preprocessing.LabelEncoder ()
le.fit (data ['diagnosis'])

print (list (le.classes_))
data ['label_opcion2'] = le.transform (data ['diagnosis'])

data.head (20)

#hay muchas más opciones: onehot, ordinal, mean...

np.where funciona si se trata de variables binarias. Si no es algo binario, no es posible hacer la conversión. numpy where funciona del siguiente modo: defines una condición y la función devuelve los elementos de x o y, dependiendo de la condición. La condición en el ejemplo anterior sería: si data [‘diagnosis’] es igual a M, si esta condición es sí, escoge 1; si es no, escoge 0. Esta decisión la guardamos en label_opcion1 y eso es todo.

LabelEncoder funciona diferente. Lo primero que hacemos es el preprocessing o preprocesamiento con LabelEncoder; posteriormente, hacemos un fit sobre los datos y luego hacemos un transform.

¿Cuál es la diferencia entre fit y transform?

Existe una pequeña diferencia entre fit y transform, aunque puedan parecer similares.

  • El fit, por una parte, se encarga de entrenar, es decir, adapta un objeto a los datos que tenemos.
  • El transform, por otra parte, consiste en aplicar un cambio sobre los datos.

Veamos un ejemplo de cómo funciona LabelEncoder. Tenemos el siguiente conjunto de datos:

azul, 0
rojo, 1
negro, 0
blanco, 0
naranja, 1
azul, 0
rojo, 1
negro, 0
blanco, 0
naranja, 1
azul, 0
rojo, 1
negro, 0
blanco, 0
naranja, 1
azul, 0
rojo, 1
negro, 0
blanco, 0
naranja, 1
azul, 0
rojo, 1
negro, 0
blanco, 0
naranja, 1
azul, 0
rojo, 1
negro, 0
blanco, 0
naranja, 1
le_data = pd.read_csv ('./data/labelencoder.txt')
le_data.head ()
colortag
0azul0
1rojo1
2negro0
3blanco0
4naranja1
from sklearn import preprocessing
le = preprocessing.LabelEncoder ()
le.fit (data ['color'])

print (list (le.classes_))

[‘azul’, ‘blanco’, ‘naranja’, ‘negro’, ‘rojo’]

Lo que hemos hecho ha sido un LabelEncoder, le hacemos un .fit con respecto a ‘color’ y lo que nos da como resultado son las clases que hay en esta columna.

Si le quitáramos ‘negro’ a la lista y elimináramos ‘rojo’, el resultado sería: [‘azul’, ‘blanco’, ‘naranja’, ‘rojo’], porque solo nos pondría las clases únicas que hay en la lista.

Y si al código anterior le añadimos las líneas que te mostramos a continuación, lo que hace es crearnos un número por cada etiqueta.

le_data ['label_color'] = le.transform (le_data ['color'])
le_data.head (15)
colortaglabel_color
0azul00
1rojo13
2rojo13
3rojo13
4rojo13
5blanco01
6naranja12

¿Qué sigue?

Ahora que hemos visto cómo funcionan np-where y LabelEncoder, podemos dar el siguiente paso y seguir aprendiendo por medio del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, una formación intensiva en la que podrás adquirir toda la fundamentación teórica y práctica para seguir tu camino como data scientist. ¡No esperes más y solicita información ahora para transformar tu futuro!

Artículos ms leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado