"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Ejemplo del clasificador del árbol de decisión para predecir la rotación del cliente

Ejemplo del clasificador del árbol de decisión para predecir la rotación del cliente

Publicado el 2025-02-06
Navegar:586

Decision Tree Classifier Example to Predict Customer Churn

Ejemplo del clasificador del árbol de decisión para predecir la rotación del cliente

Descripción general

Este proyecto demuestra cómo predecir la rotación del cliente (si un cliente deja un servicio) utilizando un clasificador de árbol de decisión. El conjunto de datos incluye características como a age , cargos mensuales , y llamadas de servicio al cliente , con el objetivo de predecir si un cliente se convertirá o no.

El modelo está capacitado utilizando el clasificador de árbol de decisión de Scikit-Learn, y el código visualiza el árbol de decisión para comprender mejor cómo el modelo está tomando decisiones.


Tecnologías utilizadas

  • python 3.x : lenguaje primario utilizado para construir el modelo.
  • pandas : para manipulación de datos y manejo de conjuntos de datos.
  • matplotlib : para la visualización de datos (trazado del árbol de decisión).
  • scikit-learn : para el aprendizaje automático, incluida la capacitación y la evaluación del modelo.

Pasos explicados

1. Importar bibliotecas necesarias

import pandas as pd
import matplotlib.pyplot as plt
import warnings
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn import tree
  • pandas (pd):

    • Esto se utiliza para la manipulación de datos y la carga de datos en el formato de DataFrame. Dataframes le permiten organizar y manipular datos estructurados como tablas (filas y columnas).
  • matplotlib (plt):

    • Esta es una biblioteca de trazado utilizada para visualizar datos. Aquí, se usa para trazar el árbol de decisión gráficamente, lo que ayuda a comprender cómo se toman las decisiones en cada nodo del árbol.
  • advertencias (advertencias):

    • El módulo de advertencias se usa para suprimir o manejar advertencias. En este código, estamos ignorando advertencias innecesarias para mantener la salida limpia y legible.
  • scikit-learn bibliotecas:

    • Train_test_split : esta función divide el conjunto de datos en subconjuntos de entrenamiento y prueba. Los datos de entrenamiento se utilizan para adaptarse al modelo, y los datos de prueba se utilizan para evaluar su rendimiento.
    • DecisionTreeClassifier : este es el modelo que se utilizará para clasificar los datos y predecir la rotación del cliente. Los árboles de decisión funcionan creando un modelo de decisiones en forma de árbol basado en las características.
    • precisión_score : esta función calcula la precisión del modelo comparando los valores predichos con los valores reales de la variable de destino (churn).
    • árbol : este módulo incluye funciones para visualizar el árbol de decisión una vez que está entrenado.

2. suprimiendo las advertencias

warnings.filterwarnings("ignore")
  • Esta línea le dice a Python que ignore todas las advertencias . Puede ser útil cuando está ejecutando modelos y no desea advertencias (como las que se encuentran sobre las funciones desactivadas) para desordenar la salida.

3. creando un conjunto de datos sintético

data = {
    'CustomerID': range(1, 101),  # Unique ID for each customer
    'Age': [20, 25, 30, 35, 40, 45, 50, 55, 60, 65]*10,  # Age of customers
    'MonthlyCharge': [50, 60, 70, 80, 90, 100, 110, 120, 130, 140]*10,  # Monthly bill amount
    'CustomerServiceCalls': [1, 2, 3, 4, 0, 1, 2, 3, 4, 0]*10,  # Number of customer service calls
    'Churn': ['No', 'No', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'No', 'Yes']*10  # Churn status
}

df = pd.DataFrame(data)
print(df.head())
  • aquí, creamos un conjunto de datos sintético para el proyecto. Este conjunto de datos simula la información del cliente para una empresa de telecomunicaciones, con características como Age, MonthyCharge, CustomerServiceCalls y la rotación de variable de destino (ya sea que el cliente se agote o no).

    • customerId : identificador único para cada cliente.
    • edad : edad del cliente.
    • MontyCharge : factura mensual del cliente.
    • CLIENSEVICECALLS : el número de veces que un cliente llamó servicio al cliente.
    • churn : si el cliente se agitó (sí/no).
  • pandas dataFrame : los datos están estructurados como DataFrame (df), una estructura de datos etiquetada de 2 dimensiones, que permite una fácil manipulación y análisis de datos.

4. dividir datos en características y variable de destino

X = df[['Age', 'MonthlyCharge', 'CustomerServiceCalls']]  # Features
y = df['Churn']  # Target Variable
  • características (x) : las variables independientes que se utilizan para predecir el objetivo. En este caso, incluye edad, mensajes mensuales y customerservicecalls.
  • Variable de destino (y) : la variable dependiente, que es el valor que está tratando de predecir. Aquí, es la columna de agitación, lo que indica si un cliente se convertirá o no.

5. dividir los datos en conjuntos de entrenamiento y prueba

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  • Train_test_split divide el conjunto de datos en dos partes: A Set de entrenamiento (utilizado para entrenar el modelo) y un conjunto de pruebas (utilizado para evaluar el modelo).
    • test_size = 0.3 : 30% de los datos se reservan para las pruebas, y el 70% restante se usa para el entrenamiento.
    • random_state = 42 garantiza la reproducibilidad de los resultados al arreglar la semilla para el generador de números aleatorios.

6. entrenando el modelo de árbol de decisión

clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
  • DecisionTreeClassifier () Inicializa el modelo de árbol de decisión.
  • clf.fit (x_train, y_train) entrena el modelo usando los datos de entrenamiento. El modelo aprende patrones de las características x_train para predecir la variable de destino Y_Train.

7. haciendo predicciones

y_pred = clf.predict(X_test)
  • clf.predict (x_test) : después de que el modelo esté entrenado, se usa para hacer predicciones en el conjunto de pruebas (x_test). Estos valores predichos se almacenan en y_pred, y los compararemos con los valores reales (y_test) para evaluar el modelo.

8. evaluando el modelo

accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
  • Accuracy_score (y_test, y_pred) calcula la precisión del modelo comparando las etiquetas de chalvas predichas (y_pred) con las etiquetas de chalvas reales (y_test) del conjunto de pruebas.
  • La precisión es una medida de cuántas predicciones eran correctas. Se imprime para la evaluación.

9. Visualización del árbol de decisión

plt.figure(figsize=(12, 8))
tree.plot_tree(clf, filled=True, feature_names=['Age', 'MonthlyCharge', 'CustomerServiceCalls'], class_names=['no churn', 'churn'])
plt.show()
  • tree.plot_tree (CLF, llenado = true) : visualiza el modelo de árbol de decisión entrenado. El argumento llenado = verdadero colorea los nodos basados ​​en la etiqueta de clase (churn/no churn).
  • característica_names : especifica los nombres de las características (variables independientes) para mostrar en el árbol.
  • class_names : especifica las etiquetas de clase para la variable de destino (churn).
  • plt.show () : muestra la visualización del árbol.

Ejecutando el código

  1. Clone el repositorio o descargue el script.
  2. Instalar dependencias:
   pip install pandas matplotlib scikit-learn
  1. Ejecute el script de Python o el cuaderno Jupyter para entrenar el modelo y visualizar el árbol de decisión.
Declaración de liberación Este artículo se reproduce en: https://dev.to/atifwattoo/decision-tree-classifier-example-to-predict-customer-churn-51fc?1 Si hay alguna infracción, comuníquese con [email protected] para deleitar él.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3