التصنيف: هل يغادر الزائر؟
هل يغادر؟ هل يشتري؟ من أي قناة جاء؟ التنبؤ بالفئة لا بالرقم. ⏱ نحو 50 دقيقة.
- تميّز التصنيف عن الانحدار.
- تدرّب مصنّفًا وتتنبّأ بفئة.
- تستخرج احتمال الفئة بـ
predict_proba. - تتعامل مع تصنيفٍ متعدّد الفئات.
١التنبؤ بفئة لا برقم
كثير من أسئلة الويب فئويّة: هل سيغادر الزائر؟ هل سيشتري؟ هذا تصنيف Classification. النموذج يتعلّم حدًّا يفصل الفئات، ثم يصنّف أي حالةٍ جديدة. أشهر بداية: الانحدار اللوجستي LogisticRegression (اسمه يخدع — إنه مصنّف).
from sklearn.linear_model import LogisticRegressionimport numpy as np # متغيّران: مدة الجلسة وعدد الصفحات ← هل اشترى؟X = np.array([[5,1],[8,1],[12,2],[120,5],[200,7],[240,8]])y = np.array([0, 0, 0, 1, 1, 1]) # 0 لم يشترِ، 1 اشترى model = LogisticRegression().fit(X, y)# زائر جديد: جلسة قصيرة وصفحة واحدةprint("تنبّؤ (قصير):", model.predict([[6, 1]])[0])# زائر متفاعلprint("تنبّؤ (متفاعل):", model.predict([[210, 7]])[0])
النموذج تعلّم أن الجلسات القصيرة لا تشتري، والطويلة المتفاعلة تشتري. الخطوات نفسها كالانحدار: أنشئ ← fit ← predict؛ تغيّر النموذج فقط.
٢الاحتمال لا الفئة فقط
التصنيف لا يعطي فئةً فحسب، بل احتمالها بـ predict_proba — مفيدٌ لترتيب الزوّار حسب أرجحيّة الشراء:
from sklearn.linear_model import LogisticRegressionimport numpy as np X = np.array([[5,1],[8,1],[12,2],[120,5],[200,7],[240,8]])y = np.array([0, 0, 0, 1, 1, 1])model = LogisticRegression().fit(X, y) p = model.predict_proba([[150, 6]])[0]print("احتمال عدم الشراء:", round(p[0], 2))print("احتمال الشراء:", round(p[1], 2))
٣التصنيف متعدّد الفئات
التصنيف لا يقتصر على فئتين. يمكن التنبؤ بالقناة التي سيأتي منها الزائر (بحث/إعلان/مباشر) — نفس الكود، وفئاتٌ أكثر:
from sklearn.linear_model import LogisticRegressionimport numpy as np X = np.array([[1],[2],[3],[10],[11],[20],[21]])y = np.array(["بحث","بحث","بحث","إعلان","إعلان","مباشر","مباشر"])model = LogisticRegression().fit(X, y)print("الفئات المعروفة:", list(model.classes_))print("تنبّؤ لـ 11:", model.predict([[11]])[0])
توقّع وتحقّق
التنبؤ بفئة (نعم/لا) هو:
LogisticRegression نوعه:
لاحتمال الفئة لا الفئة فقط:
قائمة الفئات التي تعلّمها النموذج:
الخلاصة
- التصنيف يتنبّأ بفئة؛
LogisticRegressionأشهر بداية (مصنّف رغم اسمه). - الخطوات نفسها: أنشئ ←
fit←predict؛ يتغيّر النموذج فقط. predict_probaيعطي احتمال الفئة، فيتيح استهدافًا متدرّجًا.- التصنيف يمتدّ لفئاتٍ متعدّدة بالكود نفسه.
تحدٍّ برمجي: صنّف الزائر
متقدمدرّب مصنّفًا على بيانات منفصلة بوضوح، واطبع تنبّؤه لزائرٍ قصير (جلسة 7، صفحة 1) وآخر متفاعل (جلسة 220، 8 صفحات).
- درّب
LogisticRegression. - اطبع تنبّؤ
[7,1]ثم تنبّؤ[220,8].
ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:
from sklearn.linear_model import LogisticRegressionimport numpy as npX = np.array([[4,1],[9,1],[15,2],[130,5],[210,7],[250,9]])y = np.array([0, 0, 0, 1, 1, 1])# درّب ثم اطبع تنبّؤ [7,1] ثم [220,8]
💡 تلميح 1
LogisticRegression().fit(X, y).💡 تلميح 2
model.predict([[7, 1]])[0].حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
from sklearn.linear_model import LogisticRegressionimport numpy as npX = np.array([[4,1],[9,1],[15,2],[130,5],[210,7],[250,9]])y = np.array([0, 0, 0, 1, 1, 1])model = LogisticRegression().fit(X, y)print(model.predict([[7, 1]])[0])print(model.predict([[220, 8]])[0])