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
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
- Clone el repositorio o descargue el script.
- Instalar dependencias:
pip install pandas matplotlib scikit-learn
- Ejecute el script de Python o el cuaderno Jupyter para entrenar el modelo y visualizar el árbol de decisión.