مثال على مصنف شجرة القرار للتنبؤ بتشويش العميل
ملخص
يوضح هذا المشروع كيفية التنبؤ بمضايقة العملاء (سواء كان العميل يترك خدمة) باستخدام مصنف شجرة القرار. تتضمن مجموعة البيانات ميزات مثل و رسوم شهرية و مكالمات العملاء ، بهدف التنبؤ بما إذا كان العميل سيخفق أم لا.
يتم تدريب النموذج باستخدام مصنف شجرة القرار في 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 () - : يعرض تصور الشجرة.
تشغيل الرمز
استنساخ المستودع أو قم بتنزيل البرنامج النصي.
- تثبيت التبعيات:
-
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 لتدريب النموذج وتصور شجرة القرار.
-