Calcular el ratio de desbalance de un problema

Contenido del Bootcamp Dirigido por: | Última modificación: 16 de abril de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En este artículo realizaremos un ejercicio que consiste en calcular el ratio de desbalance de un problema. Vamos a trabajar con datos de fuga de una compañía telefónica. El objetivo de este ejercicio es predecir cuándo los clientes van a abandonar la compañía.

El ejercicio de calcular el ratio de desbalance de un problema tiene varias etapas:

  • Cargar los datos churn.csv y ejecutar un primer análisis exploratorio de los datos cargados.
  • Nos damos cuenta de que el problema está desbalanceado, así que debemos calcular el ratio de desbalance.

¿Qué son los datos desbalanceados?

Los datos desbalanceados son datos que, debido a múltiples razones, no guardan medidas de proporcionalidad adecuadas en un problema de clasificación.

Cuanto mayor sea el grado de desbalance, peor será el rendimiento del ejercicio de clasificación y, por lo tanto, una métrica para calcular el ratio de desbalance adecuada debería mostrar una correlación negativa con el rendimiento de la clasificación.

Calcular el ratio de desbalance de un problema: ejercicio

#Calcular el ratio de desbalance de un problema
dataa = pd.read_csv ('./data / churn.csv')
data.head ().T
01234
stateKSOHNJOHOK
account length128071378475
area code415415415408415
phone number382 – 4657371 – 191358 – 1921375 – 9999330 – 6626
international plannononoyesyes
voice mail planyesyesnonono
number vmail messages2526000
total day minutes265.1161.6243.4299.4166.7
total day calls11012311471113
total day charge45.0722.4741.3850.928.34
total eve minutes197.4195.5121.261.9148.3
total eve calls9910311088122
total eve charge16.7816.6210.35.2612.61
total night charge244.7254.4162.6196.9186.9
total night calls9110310489121
total night charge11.0111.457.328.868.41
total intl minutes1013.712.26.610.1
total intl calls33573
total intl charge2.73.73.291.782.73
customer service calls11023
churmFalseFalseFalseFalseFalse

Vamos a hacer un análisis muy básico con data.types.

#Calcular el ratio de desbalance de un problema
data.types

state: object

account length: int64

area code: int64

phone number: object

international plan: object

voice mail plan: object

number vmail messages: int64

total day minutes: float64

total day calls: int64

total day charge: float64

total eve minutes: float64

total eve calls: int64

total eve charge: float64

total night minutes: float64

total night calls: int64

total night charge: float64

total intl minutes: float64

total intl calls: int64

total intl charge: float64

customer service calls: int64

churn: bool

dtype: object

Este resultado ha arrojado que tenemos instancias que no son enteros. Esto se convierte en un problema.

#Calcular el ratio de desbalance de un problema
data.describe ().T
Calcular el ratio de desbalance

Ahora, vamos a calcular el ratio de desbalance de este ejercicio, una vez hemos mostrado ya todo el dataset. La función que podemos usar para calcular la distribución de las características en la variable objetivo.

Es decir, en la variable objetivo, que es churn (un boolean, o sea que solo acepta valores binarios), lo que nos dice es que está desbalanceada. Esto significa que la variable no es un 50/50, sino que el 0 o el 1 tienen más registro que el otro.

Lo que vamos a hacer entonces en el ejercicio es calcular el ratio de desbalance.

Para la distribución de las clases utilizamos el value counts:

#Calcular el ratio de desbalance de un problema
data ['churn'].value_counts ()

False: 2850

True: 483

Name: churn, dtype: int64

Tenemos este resultado. Vemos que hay mayoría de false, por encima de true. Si nos piden el ratio y no un valor, lo primero que hay que hacer es esto:

#Calcular el ratio de desbalance de un problema
(data ['churn'].value_counts () / data.shape [0]) * 100

Dividimos entre el número de registros, que es equivalente al value counts, y entre el data shape, que es el número de filas.

El resultado es:

False: 85.508551

True: 14.491449

Name: churn, dtype: float64

Tenemos un 85,5 % de false y un 14.5 % de true. Este resultado sería el ratio de desbalance.

¿Quieres seguir aprendiendo?

El Big Data es una de las áreas en las que más trabajos se ofertan. Si quieres acceder a este tipo de opciones laborales, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, una formación intensiva en la que adquirirás todos los conocimientos teóricos y prácticos que te permitirán obtener el trabajo de tus sueños. ¡No esperes más para seguir tu camino hacia el éxito y solicita información ahora!

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

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