توحيد المقياس قبل التجميع
جزء من قسم التعلّم غير الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 9 من 51.
تُجري خوارزمية K-means التجميع حسب المسافة، لذا تهيمن الوحدات الأكبر. بيانات قطط الملجأ بالوزن بالغرامات والعمر بالسنوات: فارق 500 غرام يطغى على فارق 10 سنوات.
قم بالتوحيد القياسي أولًا، كما في 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).
التحدي
سهليجمع تطبيق البحث عن شقق 100 إعلان حسب الإيجار والمسافة إلى المحطة. تجمع النسخة الأولية الأعمدة الخام، وتقع جميع مجموعاتها على بُعد نحو 3 km: فتطغى الدولارات على الكيلومترات.
- قِس العمودين باستخدام
StandardScaler. - جمّع الصفوف المُقاسة بدلًا من ذلك. أبقِ التقرير: فهو يعرض كل مجموعة بوحدات حقيقية.
لمدينة أخرى:
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")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم غير الخاضع للإشراف
1اكتشاف المجموعات
التعلّم دون تسمياتقياس التشابهتنفيذ K-Means يدويًااستخدام K-Means في scikit-learnمراجعة: أعضاء النادي الرياضيتدرّب بنفسك: مترجم Python عبر الإنترنت