مقاطع التسوق
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 48 من 51.
يعرف متجر نباتات عبر الإنترنت عملاءه الـ240 فقط من خلال سلوكهم: عدد الطلبات في السنة، وحجم السلة، ونسبة المشتريات المخفّضة، وعدد الأيام منذ آخر طلب.
لم يضع أحد تسميات لها. تريد المالكة بعض الشرائح التي يمكنها وصفها بكلمات بسيطة، ورسالة بريد إلكتروني لاستعادة العميل الذي ابتعد.
لنجعل طريقتين تتفقان على k: تقترحها شجرة الأحياء، ويتحقق منها المخطط الظلي بمقارنتها بالأحياء المجاورة. ثم اقرأ كل مقطع بوحدات حقيقية.
التحدي
صعبيقرأ البرنامج موضع قطع الشجرة؛ ويُعِدّ القالب المبدئي مخططًا بعنوان.
- قم بتحجيم الميزات واقطع شجرة Ward عند ذلك الموضع. اطبع عدد المجموعات الناتجة.
- اطبع قيمة silhouette لخوارزمية k-means (3 منازل عشرية) لـ k ولكل قيمة مجاورة، ثم أفضل قيمة لـ k.
- أعِد الملاءمة باستخدامها في
plants["segment"]. رتّب من الأكبر أولًا، وامنح كل مجموعة حرفًا واطبع متوسطاتها بوحداتها الفعلية؛ ثم حدّد المجموعة التي مرّ أطول وقت على آخر طلب لها. - اعرض مخططًا مبعثرًا لكل مجموعة مع تسمية حرفها؛ أضف وسيلة الإيضاح، ثم اعرض المخطط.
لمتجر آخر، اقطع عند 8:
Tree cut at 8.0: 3 segments
Silhouette at k = 2: 0.573
Silhouette at k = 3: 0.675
Silhouette at k = 4: 0.630
Best k: 3
A (70): 8.6 orders a year, 29 EUR baskets, 15% on sale, last order 23 days ago
B (50): 3.1 orders a year, 22 EUR baskets, 60% on sale, last order 53 days ago
C (30): 1.8 orders a year, 89 EUR baskets, 10% on sale, last order 148 days ago
Win-back email: segment Cثم يصف Coddy متجرك.
جرّب بنفسك
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
from scipy.cluster.hierarchy import linkage, fcluster
# صف واحد لكل عميل في متجر النباتات
plants = pd.read_csv("plants.csv")
features = ["orders_per_year", "avg_basket_eur", "sale_share_pct", "days_since_order"]
# الارتفاع الذي يقطع عنده صاحب المتجر شجرة التصنيف، كما يُقرأ من مخططها الشجري (3 شرائح أو أكثر)
cut = float(input())
fig, ax = plt.subplots()
ax.set_title("Plant Shop Segments")
ax.set_xlabel("Orders per year")
ax.set_ylabel("Average basket (EUR)")
# اكتب الكود الخاص بك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضيتدرّب بنفسك: مترجم Python عبر الإنترنت