Menu
CoddyTech
flag Ar iconالعربيةdown icon

شرائح العملاء

جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 39 من 51.

يوظّف هذا الفصل العناقيد، وصولًا إلى قائمة تشغيل مصنّفة حسب الحالة المزاجية:

80 أغنية كنقاط، حيث تمتد الإيجابية أفقيًا وترتفع الطاقة عموديًا، ضمن أربع مجموعات اكتشفها k-means وسمّاها: متوترة في أعلى اليسار، سعيدة في أعلى اليمين، حزينة في أسفل اليسار، هادئة في أسفل اليمين

أولًا، الشرائح: مجموعات يمكن اتخاذ إجراءات بشأنها. قام نُزل بتوحيد مقياس ميزتين وتجميع نزلائه:

150 نزيلًا في نُزل، عدد الليالي لكل إقامة على المحور الأفقي والأيام التي سبقت الحجز على المحور الرأسي، ضمن ثلاث شرائح: رحلات مدرسية حُجزت قبل أشهر، ونزلاء عطلة نهاية الأسبوع بإقامات قصيرة، وظهريون بإقامات طويلة حُجزت متأخرًا

توضح الوحدات الفعلية طبيعة كل شريحة. ويُظهر مركزها بعد التحجيم ما يميزها: كل سمة بوحدة الانحراف المعياري عن متوسط الضيوف.

X = StandardScaler().fit_transform(guests[["nights", "days_ahead"]])
km = KMeans(n_clusters=3, n_init=10, random_state=0).fit(X)
print(km.cluster_centers_.round(1))

يطبع هذا:

[[ 1.3 -0.7]
 [-0.7 -0.7]
 [-0.7  1.4]]

الرقم الأبعد عن 0 في كل صف يحدد فئته. يظل الصف 0 أطول بمقدار 1.3 انحراف معياري: الرحّالة. يحجز الصف 2 أبكر بمقدار 1.4 انحراف معياري: الرحلات المدرسية.

challenge icon

التحدي

متوسط

يريد أحد المسارح معرفة المزيد عن أعضائه البالغ عددهم 166. يقرأ البرنامج الميزات المراد تقسيم الأعضاء بناءً عليها، مثل age,ticket_price.

  1. طبّق القياس على تلك الأعمدة، وقسّم الأعضاء إلى best_k(X) مجموعات باستخدام الدالة المساعدة المقدمة، ثم اطبع عددها.
  2. رتّب المجموعات من الأكبر إلى الأصغر، واطبع حجم كل مجموعة واسمها: الميزة التي يبتعد مركزها عن 0 أكثر من غيرها، وhigh أو low، ومقدار هذا الابتعاد.

لمسرح آخر، ومع age,shows_per_year:

4 segments
57 members: high shows_per_year (1.2 std from average)
52 members: low shows_per_year (1.0 std from average)
40 members: low age (1.4 std from average)
32 members: high age (1.5 std from average)

جرّب بنفسك

import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

# صف واحد لكل عضو في المسرح
members = pd.read_csv("theatre.csv")
# الخصائص المستخدمة للتقسيم، مثل age,ticket_price
features = input().split(",")


# استنادًا إلى درجات Silhouette: قيمة k من 2 إلى 6 التي تحقق أفضل درجة Silhouette لـ X
def best_k(X):
    best, best_score = 2, -1
    for k in range(2, 7):
        labels = KMeans(n_clusters=k, n_init=10, random_state=0).fit_predict(X)
        score = silhouette_score(X, labels)
        if score > best_score:
            best, best_score = k, score
    return best


# اكتب الكود الخاص بك أدناه
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس التعلّم غير الخاضع للإشراف

تدرّب بنفسك: مترجم Python عبر الإنترنت