Beispiel für Entscheidungsbaumklassifizierer Beispiel für die Vorhersage von Kundenwanderungen
Überblick
Dieses Projekt zeigt, wie der Kundenabweiche (ob ein Kunde einen Service verlässt) mithilfe eines Entscheidungsbaumklassifizierers vorhersagt. Der Datensatz enthält Funktionen wie ay , monatliche Anklage und Kundendienst ruft mit dem Ziel vor, vorherzusagen, ob ein Kunde sich aufnimmt oder nicht.
.
Das Modell wird unter Verwendung von Scikit-Learns Entscheidungsbaumklassifikator trainiert, und der Code visualisiert den Entscheidungsbaum, um besser zu verstehen, wie das Modell Entscheidungen trifft.
Technologien verwendet
-
python 3.x : Primärsprache zum Erstellen des Modells.
-
pandas : Für Datenmanipulation und Handhabung von Datensätzen.
-
Matplotlib : Für die Datenvisualisierung (Plotting -Entscheidungsbaum).
-
scikit-larn : für maschinelles Lernen, einschließlich Modelltraining und Bewertung.
Schritte erklärt
1. Import notwendige Bibliotheken
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. Unterdrückung von Warnungen
warnings.filterwarnings("ignore")
- Diese Zeile sagt Python zu ignorieren Sie alle Warnungen . Es kann hilfreich sein, wenn Sie Modelle ausführen und keine Warnungen (z.
3.
Erstellen eines synthetischen Datensatzes
data = {
'CustomerID': Bereich (1, 101), # eindeutige ID für jeden Kunden
'Alter': [20, 25, 30, 35, 40, 45, 50, 55, 60, 65]*10, # Alter der Kunden
'Monthly Charge': [50, 60, 70, 80, 90, 100, 110, 120, 130, 140]*10, # monatliche Rechnung.
'CustomerserviceCalls': [1, 2, 3, 4, 0, 1, 2, 3, 4, 0]*10, Nummer der Kundendienstanrufe
'CHURN': ['Nein', 'Nein', 'Ja', 'Nein', 'Ja', 'Nein', 'Ja', 'Ja', 'Nein', 'Ja']*10 # Churn Status
}
df = pd.dataframe (Daten)
print (df.head ())
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())
- Hier erstellen wir ein
synthetischer Datensatz für das Projekt. Dieser Datensatz simuliert Kundeninformationen für ein Telekommunikationsunternehmen mit Funktionen wie Alter, monatlich, CustomerServiceCalls und der Zielvariablen (ob der Kunde aufgewühlt oder nicht).
- customerId : Einzigartige Kennung für jeden Kunden.
- ay : Kundenalter.
- monatlycharge : monatliche Rechnung des Kunden.
- customerServiceCalls : Die Anzahl, mit der ein Kunde Kundendienst bezeichnet.
- churn : ob der Kunde aufgewühlt (ja/nein).
-
pandas dataframe : Die Daten sind als DataFrame (df) strukturiert, eine zweidimensionale beschriftete Datenstruktur, die eine einfache Manipulation und Analyse von Daten zulässt.
.
4.
Aufteilung von Daten in Funktionen und Zielvariable
x = df [['Alter', 'Monthlycharge', 'CustomerserviceCalls']] # Features
y = df ['kurn'] # Zielvariable
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())
- features (x) : die unabhängigen Variablen, die verwendet werden, um das Ziel vorherzusagen. In diesem Fall umfasst es Alter, monatliche und customerserviceCalls.
- Zielvariable (y) : Die abhängige Variable, die der Wert ist, den Sie vorhersagen möchten. Hier ist es die Spalte der Abwanderung, die angibt, ob ein Kunde sich abwenden wird oder nicht.
5.
Aufteilung der Daten in Training und Testssätze Sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
-
trainieren_test_split teilt den Datensatz in zwei Teile auf: a Trainingset (verwendet, um das Modell zu trainieren) und a testing set (zur Bewertung des Modells).
-
test_size = 0.3 : 30% der Daten werden zum Testen beiseite gelegt, und die verbleibenden 70% werden für das Training verwendet.
-
random_state = 42 stellt die Reproduzierbarkeit der Ergebnisse sicher, indem der Samen für den Zufallszahlengenerator fixiert wird.
6. Schulung des Entscheidungsbaummodells
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
-
DecisionTreeClassifier () initialisiert das Entscheidungsbaummodell.
-
clf.fit (x_train, y_train) trainiert das Modell mit den Trainingsdaten. Das Modell lernt Muster aus den X_train -Funktionen, um die Y_train -Zielvariable vorherzusagen.
7. Vorhersagen machen
y_pred = clf.predict(X_test)
-
clf.predict (x_test) : Nach dem Training des Modells wird es verwendet, um Vorhersagen im Testsatz (x_test) zu machen. Diese vorhergesagten Werte werden in y_pred gespeichert, und wir werden sie mit den tatsächlichen Werten (y_test) vergleichen, um das Modell zu bewerten.
.
8. Bewertung des Modells
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
-
accuracy_score (y_test, y_pred) berechnet die Genauigkeit des Modells, indem sie die vorhergesagten Abwanderungsbezeichnungen (y_pred) mit den tatsächlichen Churn -Labels (y_test) aus dem Testsatz vergleichen.
- Die Accuracy ist ein Maß dafür, wie viele Vorhersagen korrekt waren. Es wird zur Bewertung ausgedruckt.
9. Visualisierung des Entscheidungsbaums
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, gefüllt = true) : Visualisiert das trainierte Entscheidungsbaummodell. Das gefüllte = echte Argument färbt die Knoten basierend auf dem Klassenetikett (Churn/No Churn).
-
feature_names : Gibt die Namen der Funktionen (unabhängige Variablen) an, die im Baum angezeigt werden.
-
class_names : Gibt die Klassenbezeichnungen für die Zielvariable (Churn) an.
-
plt.show () : Zeigt die Baumvisualisierung an.
Ausführen des Codes
- Klonen Sie das Repository oder laden Sie das Skript herunter.
- Installieren Sie Abhängigkeiten:
pip install pandas matplotlib scikit-learn
- Führen Sie das Python -Skript oder das Jupyter -Notizbuch aus, um das Modell zu trainieren und den Entscheidungsbaum zu visualisieren.