No me agrada
df_data.isnull().sum()
Preferi utilizar las funciones missing que creamos en el curso de imputacion de valores faltantes.
Fundamentos de regresión logística
Regresión Logística con Python y Scikit Learn
Regresión Logística con Python y Scikit Learn
Cuándo usar la regresión logística en modelos de clasificación
Regresión Logística: Fórmula y Aplicación en Python
Regresión logística binomial
Regresión Logística Aplicada a Dataset Binomial de Churn
Análisis de Correlación y Escalado de Datos en Pandas
Análisis Exploratorio de Datos con Visualización usando Seaborn y Matplotlib
Regresión Logística para Clasificación Binomial
Regresión Logística: Evaluación y Optimización de Modelos
Análisis de Resultados en Modelos de Regresión Logística
Regularizadores L1 y L2 en Regresión Logística
Regresión logística multinomial
Regresión Logística Multiclase: Estrategias y Solvers Efectivos
Clasificación Multiclase con Regresión Logística en Python
Análisis Exploratorio y Escalamiento de Datos para Regresión Logística
Optimización de Modelos de Regresión Logística Multiclase
Conclusiones
Proyecto Final: Diagnóstico de Cáncer de Seno con Regresión Logística
Comparte tu proyecto de regresión logística y certifícate
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
La regresión logística es una poderosa herramienta dentro del aprendizaje automático y la inteligencia artificial utilizada principalmente para problemas de clasificación. Este proceso, que empieza desde la preparación de los datos hasta la implementación del modelo, es fundamental para obtener resultados precisos y confiables. Descubramos cómo aplicar la regresión logística en un proyecto desde cero.
La regresión logística es un tipo de modelo estadístico que se utiliza para predecir resultados binarios en una muestra de datos. A este tipo de problemas se les llama comúnmente "dataset binomiales". Un ejemplo clásico es predecir si un cliente de una compañía hará "churn" (es decir, cancelará su suscripción) o no. En general, la regresión logística se especializa en:
Una parte crítica del proyecto es la preparación de los datos. Un buen procesamiento te ayudará a obtener resultados más precisos y eficientes. Aquí te presento los pasos esenciales del proceso:
Para este proyecto, se utiliza un dataset de "churn" de Kaggle, que se relaciona con el evento en el que un cliente da de baja los servicios de una compañía. Las características del dataset incluyen:
A continuación, se presenta un extracto del código en Python necesario para la preparación de datos usando librerías comunes como Pandas y NumPy:
# Importar librerías necesarias
import pandas as pd
import numpy as np
# Cargar los datos
df_data = pd.read_csv('ruta/al/dataset.csv')
# Verificar y transformar columnas numéricas
df_data['TotalCharges'] = pd.to_numeric(df_data['TotalCharges'], errors='coerce')
# Manejar valores nulos
df_data.dropna(inplace=True)
# Eliminar columnas innecesarias
df_data.drop('customerID', axis=1, inplace=True)
# Convertir la variable objetivo a numérica
df_data['Churn'] = df_data['Churn'].replace({'Yes': 1, 'No': 0})
# Aplicar One-Hot Encoding a variables categóricas
df_data = pd.get_dummies(df_data)
Después de la limpieza y transformación inicial de los datos, el siguiente paso es lidiar con la multicolinealidad y escalar los datos. Estos pasos son cruciales para asegurar que el modelo de regresión logística funcione de manera coherente y con mayor precisión.
Este enfoque metódico asegura resultados sólidos en cualquier proyecto de aprendizaje automático. ¡Sigue aprendiendo y profundizando en cada paso de este proceso! Explorando y convirtiendo datos a su forma más conducente para los algoritmos, establecerás una base robusta para posteriores análisis y modelos predictivos.
Aportes 21
Preguntas 2
No me agrada
df_data.isnull().sum()
Preferi utilizar las funciones missing que creamos en el curso de imputacion de valores faltantes.
Otra forma de importar la data sin descargarla es usando el API de kaggle
!pip install opendatasets
import opendatasets as od
od.download('https://www.kaggle.com/datasets/blastchar/telco-customer-churn')
df_data = pd.read_csv('/content/telco-customer-churn/WA_Fn-UseC_-Telco-Customer-Churn.csv')
get_dummies duplica los features en “feature_yes” y “feature_No”, esto pudiera ser redundante. si no queremos tener esta “duplicidad” podemos utilizar:
df_data_processing = pd.get_dummies(df_data_processing, drop_first=True).
errors='coerce'
indica que si no se puede convertir un elemento de la columna TotalCharges a un número, se debe reemplazar con un valor especial NaN (Not a Number)
Esto se conoce como “coerción” porque se está forzando la conversión a un tipo de datos numérico, y si no es posible, se está forzando el uso de NaN en su lugar
Como propuesta, deberían de incluir en la sección de recursos el archivo tipo plantilla. Para que podamos irlo rellenando nosotros
Por el momento los archivos que incluyen ya están respondidos.
Hola, yo resolví todo el problema por mi cuenta antes de ver la explicación, cuando vi que la columna ‘TotalCharges’ estaba dada como categórica intenté convertirla a numérica con astype(float),sin embargo, me aparecía el problema d que ciertos valores " " no podían ser convertidos a numéricos, por lo que lo primero que hice fue determinar que valores estaban como vacíos en esa columna
Posteriormente procedí a eliminar estos valores y a convertir esta columna a numérica.
Al final resulta los mismo que hace el profesor usando pd.to_numeric ,solo que haciendo esto los valores vacíos pasan a ser NaN y luego se tienen que eliminar, lo comprobé creando otro dataset y comparando la columnas donde anteriormente habían valores vacíos
Esto es lo que hace la variable get.dummies más detalladamente:
Aquí hay una descripción de cómo funciona pd.get_dummies():
Entrada: La función toma como entrada un DataFrame de pandas que contiene una o más columnas con variables categóricas que deseas codificar.
Salida: pd.get_dummies() produce un nuevo DataFrame donde las columnas categóricas originales se han convertido en columnas binarias (0 o 1), una columna por categoría. Cada columna binaria representa una categoría específica y se llama “indicador” o “dummy variable”. Cuando una fila tiene una categoría, su columna correspondiente tendrá un valor de 1; de lo contrario, será 0.
Por ejemplo, si tienes una columna llamada “Color” con valores categóricos como “Rojo”, “Verde” y “Azul”, pd.get_dummies() generará tres nuevas columnas llamadas “Color_Rojo”, “Color_Verde” y “Color_Azul”, y asignará 1 o 0 según el color presente en cada fila.
Este proceso es útil en el análisis de datos y en la construcción de modelos de aprendizaje automático, ya que permite trabajar con variables categóricas en algoritmos que requieren datos numéricos, como regresión lineal, regresión logística y otros modelos. La codificación one-hot evita la asignación incorrecta de importancia numérica a las categorías y garantiza que cada categoría se trate de manera independiente en el modelo.
Recordemos que:
df_data.head(5)
es igual a escribir:
df_data.head()
Interesante este metodo de conversion, no sabia nada. Ahora si tengo ganas de mejorar mis capacidades.
Esto es lo que hace el comando dropna más el arugmento inpalce_True =
Entonces, cuando ejecutas df_data.dropna(inplace=True), elimina todas las filas en df_data que contienen valores nulos y aplica este cambio directamente en el DataFrame original df_data. El resultado es que df_data ahora contendrá solo las filas que no tienen valores nulos en ninguna de sus columnas. Las filas con valores nulos se han eliminado del DataFrame.
Comandos similares a la misma familia de comandos como dropna:
.fillna(): Este método se utiliza para rellenar valores nulos con un valor específico o una estrategia de relleno. Puedes proporcionar un valor constante, un diccionario de relleno por columna o utilizar métodos de interpolación.
.isnull() y .notnull(): Estos métodos te permiten crear máscaras booleanas que indican dónde se encuentran los valores nulos y no nulos en un DataFrame. Son útiles para filtrar o seleccionar datos basados en la presencia o ausencia de valores nulos.
.interpolate(): Este método se utiliza para realizar la interpolación de valores nulos en una serie o DataFrame. La interpolación calcula valores intermedios para rellenar los valores nulos basándose en los valores adyacentes.
.drop(): Aunque su nombre es similar al de .dropna(), el método .drop() se utiliza para eliminar filas o columnas específicas en un DataFrame, pero puedes especificar etiquetas de fila o columna en lugar de valores nulos.
.replace(): Este método se utiliza para reemplazar valores específicos, incluidos los valores nulos, por otros valores en un DataFrame.
.ffill() y .bfill(): Estos métodos se utilizan para rellenar valores nulos hacia adelante (ffill) o hacia atrás (bfill) utilizando el valor más cercano en la misma columna.
.melt(): Esta función se utiliza para realizar una operación de “melt” o “unpivot” en un DataFrame, lo que puede ayudar a lidiar con datos faltantes.
.combine_first(): Este método se utiliza para combinar dos DataFrames, rellenando los valores nulos en el DataFrame original con los valores del otro DataFrame.
Estos son algunos ejemplos de los métodos y funciones disponibles en pandas para el manejo de valores nulos y la limpieza de datos. La elección del método adecuado dependerá de la naturaleza de tus datos y del tipo de operación que necesites realizar.
Yo converti los valores del target usando where de numpy que es igual a los condicionales de excel
df_data['Churn'] = df_data['Churn'].apply(lambda x: np.where(x == 'Yes', 1, 0))
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?