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

توحيد المقياس قبل التجميع

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

تُجري خوارزمية K-means التجميع حسب المسافة، لذا تهيمن الوحدات الأكبر. بيانات قطط الملجأ بالوزن بالغرامات والعمر بالسنوات: فارق 500 غرام يطغى على فارق 10 سنوات.

مخططان يوضحان بيانات 120 قطة من الملجأ، العمر بالسنوات على المحور الأفقي والوزن بالغرامات على المحور الرأسي. على اليسار، عناقيد البيانات الخام: تنقسم القطط البالغة حسب الوزن، فتختلط القطط الصغيرة والكبيرة في العمر. على اليمين، العناقيد بعد تغيير المقياس: قطط صغيرة، وبالغة، ومسنة، مفصولة حسب العمر

قم بالتوحيد القياسي أولًا، كما في k-NN، لكي يكون لكل ميزة الوزن نفسه:

X_scaled = StandardScaler().fit_transform(X)
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X_scaled)

ينفّذ make_pipeline(StandardScaler(), KMeans(...)) الأمرين في نموذج واحد. ثم اقرأ كل مجموعة بوحداتها الأصلية: احسب متوسط صفوفها الأصلية، X[km.labels_ == c].mean(axis=0).

challenge icon

التحدي

سهل

يجمع تطبيق البحث عن شقق 100 إعلان حسب الإيجار والمسافة إلى المحطة. تجمع النسخة الأولية الأعمدة الخام، وتقع جميع مجموعاتها على بُعد نحو 3 km: فتطغى الدولارات على الكيلومترات.

  1. قِس العمودين باستخدام StandardScaler.
  2. جمّع الصفوف المُقاسة بدلًا من ذلك. أبقِ التقرير: فهو يعرض كل مجموعة بوحدات حقيقية.

لمدينة أخرى:

38 flats: $1820 a month, 0.9 km out
33 flats: $1130 a month, 4.2 km out
29 flats: $2760 a month, 1.5 km out

جرّب بنفسك

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler

# صف واحد لكل شقة: الإيجار الشهري بالدولار، والمسافة إلى المحطة بوحدة km
flats = pd.read_csv("flats.csv")
X = flats[["rent", "station_km"]]

# هذا يجمع الأعمدة الخام في عناقيد: أصلح ذلك
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X)

# اعرض كل مجموعة بوحدات القياس الفعلية، بدءًا بالأكبر
sizes = pd.Series(km.labels_).value_counts()
for c in sizes.index:
    group = flats[km.labels_ == c]
    print(f"{sizes[c]} flats: ${round(group['rent'].mean())} a month, {group['station_km'].mean():.1f} km out")
quiz iconاختبر نفسك

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

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

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