"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 의사 결정 트리 분류기 예를 예측하는 고객 이탈을 예측합니다

의사 결정 트리 분류기 예를 예측하는 고객 이탈을 예측합니다

2025-02-06에 게시되었습니다
검색:848

Decision Tree Classifier Example to Predict Customer Churn

의사 결정 트리 분류기 예를 예측하는 고객 이탈을 예측합니다

개요

이 프로젝트는 의사 결정 트리 분류기를 사용하여 고객이 서비스를 떠나는 지 여부를 예측하는 방법을 보여줍니다. 데이터 세트에는 age , 월별 요금 고객 서비스 호출 와 같은 기능이 포함되어 있습니다.

모델은 Scikit-Learn의 의사 결정 트리 분류기를 사용하여 교육을 받고 코드는 의사 결정 트리를 시각화하여 모델이 결정을 내리는 방법을 더 잘 이해합니다.


사용 된 기술

  • Python 3.x : 모델 구축에 사용되는 기본 언어.
  • pandas : 데이터 조작 및 처리 데이터 세트 용.
  • matplotlib : 데이터 시각화 (의사 결정 트리 플로팅).
  • Scikit-Learn : 모델 교육 및 평가를 포함한 머신 러닝 용.

설명 된 단계

1.

필요한 라이브러리 가져 오기

팬더를 PD로 가져옵니다 matplotlib.pyplot을 plt로 가져옵니다 경고 수입 sklearn.model_selection import train_test_split sklearn.tree 가져 오기 의사 결정 treeclassifier Sklearn.metrics import accuracy_score에서 Sklearn 수입 트리에서
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) :

      이것은 데이터 조작 및 데이터 프레임 형식에 데이터를로드하는 데 사용됩니다. 데이터 프레임은 테이블 (행 및 열)과 같은 구조화 된 데이터를 구성하고 조작 할 수 있습니다.
  • matplotlib (plt) :

      이것은 데이터를 시각화하는 데 사용되는 플로팅 라이브러리입니다. 여기에서는 의사 결정 트리를 그래픽으로 플로팅하는 데 사용되며 트리의 각 노드에서 의사 결정이 어떻게 이루어지는 지 이해하는 데 도움이됩니다.
  • 경고 (경고) :

      경고 모듈은 경고를 억제하거나 처리하는 데 사용됩니다. 이 코드에서는 출력을 깨끗하고 읽을 수 있도록 불필요한 경고를 무시하고 있습니다.
  • scikit-learn 라이브러리 :

    • train_test_split :이 기능은 데이터 세트를 교육 및 테스트 하위 집합으로 분할합니다. 교육 데이터는 모델에 맞는 데 사용되며 테스트 데이터는 성능을 평가하는 데 사용됩니다.
    • DecisionTreeClassifier : 이것은 데이터를 분류하고 고객 이탈을 예측하는 데 사용될 모델입니다. 의사 결정 트리는 기능을 기반으로 나무와 같은 의사 결정 모델을 만들어 작동합니다.
    • accuracy_score :이 함수는 예측 된 값을 대상 변수의 실제 값과 비교하여 모델의 정확도를 계산합니다.
    • tree :이 모듈은 훈련이 끝나면 의사 결정 트리를 시각화하는 기능이 포함되어 있습니다.
2.

경고 억제

warnings.filterwarnings ( "무시")
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
    이 줄은 Python에게
  • 모든 경고를 무시하도록 지시합니다 . 모델을 실행할 때 도움이 될 수 있으며 (감가 상승 된 기능에 관한 것과 같은) 출력을 혼란스럽게하는 경고를 원하지 않습니다.
3.

합성 데이터 세트 만들기

data = { 'CustomerID': Range (1, 101), # 각 고객에 대한 고유 ID 'Age': [20, 25, 30, 35, 40, 45, 50, 55, 60, 65]*10, # 고객의 연령 '월간 충전': [50, 60, 70, 80, 90, 100, 110, 120, 130, 140]*10, # 월간 청구서 금액 'CustomerserViceCalls': [1, 2, 3, 4, 0, 1, 2, 3, 4, 0]*10, # 고객 서비스 전화 번호 '이탈':
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())
  • 여기, 우리는 프로젝트를위한 합성 데이터 세트 를 만듭니다. 이 데이터 세트는 AGE, 월별 충전, 고객 서비스 이탈 (고객이 휘젓거나 휘젓는 지)와 같은 기능을 갖춘 통신 회사의 고객 정보를 시뮬레이션합니다.

    • customerId : 각 고객에 대한 고유 식별자.
    • 나이 : 고객의 나이.
    • 월간 충전 : 고객의 월간 청구서.
    • customerservicecalls : 고객이 고객 서비스라고 불리는 횟수.
    • 이탈 : 고객이 휘젓는 지 (예/아니오)
  • 4. 기능 분할 기능과 대상 변수

  • x = df [
# 기능 y = df

# 대상 변수

X = df[['Age', 'MonthlyCharge', 'CustomerServiceCalls']]  # Features
y = df['Churn']  # Target Variable
: 대상을 예측하는 데 사용되는 독립 변수. 이 경우 연령, 월 충전 및 고객 서비스가 포함됩니다.
  • 대상 변수 (y) : 종속 변수는 예측하려는 값입니다. 여기에서는 Churn 열입니다. 이는 고객이 이탈 할 것인지 아닌지를 나타냅니다.
  • 5. 데이터를 교육 및 테스트 세트로 분할

x_train, x_test, y_train, y_test = train_test_split (x, y, test_size = 0.3, random_state = 42)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
데이터 세트를 두 부분으로 나눕니다.
  • test_size = 0.3 : 데이터의 30%가 테스트를 위해 따로 설정되었고 나머지 70%는 교육에 사용됩니다. random_state = 42 임의의 숫자 생성기의 시드를 고정하여 결과의 ​​재현성을 보장합니다.
    • 6.
    • 의사 결정 트리 모델 훈련
    • clf = dectionTreeClassifier () clf.fit (x_train, y_train)

DectionTreeClassifier () 의사 결정 트리 모델을 초기화합니다.

clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
는 교육 데이터를 사용하여 모델을 훈련시킵니다. 이 모델은 y_train target 변수를 예측하기 위해 x_train 기능의 패턴을 학습합니다.
  • 7. 예측 만들기
  • y_pred = clf.predict (x_test)

clf.predict (x_test) : 모델을 훈련 한 후 테스트 세트 (x_test)를 예측하는 데 사용됩니다. 이 예측 된 값은 y_pred에 저장되며 모델을 평가하기 위해 실제 값 (y_test)과 비교할 것입니다. .

y_pred = clf.predict(X_test)
모델 평가
  • 정확도 = accuracy_score (y_test, y_pred) print (f "정확도 : {정확도}")

accuracy_score (y_test, y_pred) 예측 된 이탈 레이블 (y_pred)을 테스트 세트에서 실제 이탈 레이블 (y_test)과 비교하여 모델의 정확도를 계산합니다.

accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
는 얼마나 많은 예측이 올바른지 측정합니다. 평가를 위해 인쇄됩니다.
  • 9. 의사 결정 트리 시각화
  • plt.figure (figsize = (12, 8)) tree.plot_tree (clf, closed = true, feaction_names = , class_names =
  • ))). plt.show ()

tree.plot_tree (clf, closed = true)

: 훈련 된 의사 결정 트리 모델을 시각화합니다. CLASS 라벨 (Churn/No Churn)을 기반으로 한 노드를 채우는 = 진정한 인수.
plt.figure(figsize=(12, 8))
tree.plot_tree(clf, filled=True, feature_names=['Age', 'MonthlyCharge', 'CustomerServiceCalls'], class_names=['no churn', 'churn'])
plt.show()
    feaction_names
  • : 트리에 표시 할 기능 (독립 변수)의 이름을 지정합니다.
  • class_names
  • : 대상 변수 (Churn)의 클래스 레이블을 지정합니다.
  • plt.show ()
  • : 트리 시각화를 표시합니다.
  • 코드 실행
  • 저장소를 복제하거나 스크립트를 다운로드하십시오.

종속성 설치 :

    PIP 설치 팬더 MATPLOTLIB SCIKIT-LEARN
  1. Python 스크립트 또는 Jupyter 노트북을 실행하여 모델을 훈련시키고 의사 결정 트리를 시각화하십시오.
   pip install pandas matplotlib scikit-learn
릴리스 선언문 이 기사는 https://dev.to/atifwattoo/decision-tree-classifier-example-topredict-customer-churn-51fc ?1에서 재현됩니다. 그것.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3