"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > مثال على مصنف شجرة القرار للتنبؤ بتشويش العميل

مثال على مصنف شجرة القرار للتنبؤ بتشويش العميل

نشر في 2025-02-06
تصفح:520

Decision Tree Classifier Example to Predict Customer Churn

مثال على مصنف شجرة القرار للتنبؤ بتشويش العميل

ملخص

يوضح هذا المشروع كيفية التنبؤ بمضايقة العملاء (سواء كان العميل يترك خدمة) باستخدام مصنف شجرة القرار. تتضمن مجموعة البيانات ميزات مثل و رسوم شهرية و مكالمات العملاء ، بهدف التنبؤ بما إذا كان العميل سيخفق أم لا.

يتم تدريب النموذج باستخدام مصنف شجرة القرار في Scikit-Learn ، ويتصور الكود شجرة القرار لفهم كيفية اتخاذ القرارات بشكل أفضل.


التقنيات المستخدمة

  • Python 3.x : اللغة الأساسية المستخدمة لبناء النموذج.
  • pandas : من أجل معالجة البيانات ومعالجة مجموعات البيانات.
  • matplotlib : من أجل تصور البيانات (رسم شجرة القرار).
  • Scikit-Learn : للتعلم الآلي ، بما في ذلك التدريب والتقييم النماذج.

أوضح الخطوات

1.

استيراد المكتبات اللازمة

استيراد الباندا كـ PD استيراد matplotlib.pyplot كما plt تحذيرات استيراد من sklearn.model_selection import train_test_split من Sklearn.tree Import DentreEclassifier من Sklearn.Metrics استيراد 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):

      يتم استخدام هذا لمعالجة البيانات وتحميل البيانات بتنسيق DataFrame. تتيح لك DataFrames تنظيم البيانات المهيكلة والمعالجة مثل الجداول (الصفوف والأعمدة).
  • matplotlib (plt):

      هذه مكتبة تخطيط تستخدم لتصور البيانات. هنا ، يتم استخدامه لرسم شجرة القرار بيانياً ، مما يساعد في فهم كيفية اتخاذ القرارات في كل عقدة من الشجرة.
  • تحذيرات (تحذيرات):

      يتم استخدام وحدة التحذيرات لقمع أو التعامل مع التحذيرات. في هذا الرمز ، نتجاهل تحذيرات غير ضرورية للحفاظ على الناتج نظيفة وقابلة للقراءة.
  • Scikit-Learn المكتبات:

    • Train_test_split : تقوم هذه الوظيفة بتقسيم مجموعة البيانات إلى مجموعات تدريب واختبار. يتم استخدام بيانات التدريب لتناسب النموذج ، ويتم استخدام بيانات الاختبار لتقييم أدائها.
    • قرار reclassifier : هذا هو النموذج الذي سيتم استخدامه لتصنيف البيانات والتنبؤ بتشجيع العميل. تعمل أشجار القرار من خلال إنشاء نموذج يشبه الأشجار للقرارات بناءً على الميزات.
    • ACCURACY_SCORE : تحسب هذه الوظيفة دقة النموذج من خلال مقارنة القيم المتوقعة مع القيم الفعلية للمتغير الهدف (churn).
    • شجرة : تتضمن هذه الوحدة وظائف لتصور شجرة القرار بمجرد تدريبها.
2.

قمع التحذيرات

تحذيرات. 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) ، # معرف فريد لكل عميل "العمر": [20 ، 25 ، 30 ، 35 ، 40 ، 45 ، 50 ، 55 ، 60 ، 65]*10 ، # عمر العملاء "الشهرية الشهرية": [50 ، 60 ، 70 ، 80 ، 90 ، 100 ، 110 ، 120 ، 130 ، 140]*10 ، # شهرية الفاتورة "CustomererviceCalls": [1 ، 2 ، 3 ، 4 ، 0 ، 1 ، 2 ، 3 ، 4 ، 0]*10 ، # عدد مكالمات خدمة العملاء "churn": ["لا" ، "لا" ، "نعم" ، "لا" ، "نعم" ، "لا" ، "نعم" ، "نعم" ، "لا" ، "نعم"]*10 # churn status } df = pd.dataframe (البيانات) طباعة (df.head ())
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
  • هنا ، نقوم بإنشاء

    مجموعة بيانات صناعية للمشروع. تحاكي مجموعة البيانات هذه معلومات العميل لشركة اتصالات ، مع ميزات مثل Age و Donylycharge و CustomererviceCalls و churn المتغير المستهدف (سواء كان العميل قد قام بتشويه أم لا).

    • customerId : معرف فريد لكل عميل.
    • العمر : عصر العميل.
    • شهرية : فاتورة شهرية للعميل.
    • customererviceCalls : عدد المرات التي اتصل بها العميل خدمة العملاء.
    • churn : ما إذا كان العميل قد تم تخفيفه (نعم/لا).
  • Pandas DataFrame : يتم تنظيم البيانات كبيانات بيانات (df) ، وهيكل بيانات ثنائي الأبعاد ، مما يسمح بمعالجة البيانات وتحليلها بسهولة.

4.

تقسيم البيانات إلى ميزات ومتغير الهدف

x = df [["العمر" ، "الشهرية" ، "CustomererviceCalls"] y = df ['churn'] # متغير الهدف
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
  • ميزات (x) : المتغيرات المستقلة المستخدمة للتنبؤ بالهدف. في هذه الحالة ، يشمل العمر ، الشهرية ، و CustomererviceCalls.
  • المتغير الهدف (y) : المتغير التابع ، وهو القيمة التي تحاول التنبؤ بها. هنا ، هو عمود churn ، الذي يشير إلى ما إذا كان العميل سوف يتخلى أم لا.
5.

تقسيم البيانات إلى مجموعات التدريب والاختبار

x_train ، x_test ، y_train ، y_test = train_test_split (x ، y ، test_size = 0.3 ، random_state = 42)
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
  • Train_test_split يقسم مجموعة البيانات إلى جزأين: A مجموعة التدريب (تستخدم لتدريب النموذج) و A مجموعة الاختبار (تستخدم لتقييم النموذج).
    • test_size = 0.3 : يتم تخصيص 30 ٪ من البيانات للاختبار ، ويتم استخدام 70 ٪ المتبقية للتدريب.
    • random_state = 42 يضمن استنساخ النتائج عن طريق إصلاح البذور لمولد الأرقام العشوائية.
6.

تدريب نموذج شجرة القرار

clf = decentreeClassifier () clf.fit (x_train ، y_train)
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
  • decentreeClassifier () تهيئة نموذج شجرة القرار.
  • clf.fit (x_train ، y_train) يدرب النموذج باستخدام بيانات التدريب. يتعلم النموذج أنماطًا من ميزات X_Train للتنبؤ بمتغير Targe Y_Train.
7.

إجراء تنبؤات

y_pred = clf.predict (x_test)
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
  • clf.predict (x_test) : بعد تدريب النموذج ، يتم استخدامه لجعل التنبؤات على مجموعة الاختبار (x_test). يتم تخزين هذه القيم المتوقعة في Y_PRED ، وسنقارنها بالقيم الفعلية (Y_Test) لتقييم النموذج.
8.

تقييم النموذج

الدقة = Accuracy_Score (y_test ، y_pred) PRINT (F "دقة: {دقة}")
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
  • ACCURACY_SCORE (y_test ، y_pred) يحسب دقة النموذج من خلال مقارنة ملصقات churn المتوقعة (y_pred) مع ملصقات churn الفعلية (y_test) من مجموعة الاختبار.
  • الدقة
  • هي مقياس لعدد التنبؤات كانت صحيحة. يتم طباعته للتقييم.
  • 9.
تصور شجرة القرار

plt.figure (Figsize = (12 ، 8)) tree.plot_tree (clf ، exhip = true ، depative_names = ['age' ، 'monterlycharge' ، 'customererviceCalls'] ، class_names = ['no churn' ، 'churn']) plt.show ()

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 ، ملأ = صواب)
  • : تصور نموذج شجرة القرار المدربين. ملء = الوسيطة الحقيقية تلوين العقد على أساس تسمية الفئة (churn/no churn).
  • feature_names
  • : يحدد أسماء الميزات (المتغيرات المستقلة) لعرضها في الشجرة.
  • class_names
  • : يحدد ملصقات الفئة للمتغير الهدف (churn).
  • plt.show ()
  • : يعرض تصور الشجرة.
تشغيل الرمز

استنساخ المستودع أو قم بتنزيل البرنامج النصي.
  1. تثبيت التبعيات:
  2. pip تثبيت pandas matplotlib scikit-learn
plt.figure(figsize=(12, 8))
tree.plot_tree(clf, filled=True, feature_names=['Age', 'MonthlyCharge', 'CustomerServiceCalls'], class_names=['no churn', 'churn'])
plt.show()
قم بتشغيل البرنامج النصي Python أو دفتر Jupyter لتدريب النموذج وتصور شجرة القرار.
بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/atifwattoo/decision-tree-classifier-example-to-predict-customer-shurn-51fc؟1 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذف هو - هي.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3