מודלים אגרומרטיביים
חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 17 מתוך 51.
מכוניות ממלאות שני חניונים, וביניהם שורת מכוניות לאורך הכביש. שתי דרכים למזג אותן ל־2 אשכולות:
scikit-learn מבצעת את המיזוג. ציינו מתי לעצור באמצעות n_clusters:
from sklearn.cluster import AgglomerativeClustering
model = AgglomerativeClustering(n_clusters=2, linkage="ward")
labels = model.fit_predict(X)linkage קובע עד כמה שתי קבוצות רחוקות זו מזו:
"ward", ברירת המחדל: שומר על הקבוצות צפופות"complete": הזוג הרחוק ביותר שלהן"average": הממוצע של כל הזוגות"single": הזוג הקרוב ביותר שלהן
יחיד עוקב אחר שרשראות: כאן הדרך בולעת את שני מגרשי החניה. Ward יוצר קבוצות עגולות ואחידות.
אתגר
בינוניתותי בר גדלים בשלושה כתמים, ועוד כמה לאורך שביל. איזו שיטת קישור מזהה את הכתמים? plants מכיל את המיקומים שלהם.
- עבור כל שיטת קישור ב-
linkages, חלקו את הצמחים ל-3 קבוצות. - הדפיסו את הגדלים של הקבוצות כרשימה, מהגדולה לקטנה.
- כאשר הקבוצה הגדולה ביותר מכילה יותר ממחצית הצמחים, הוסיפו
chained.
עבור אחו אחר:
ward: [40, 38, 31]
complete: [41, 37, 31]
average: [41, 37, 31]
single: [86, 22, 1] chainedנסו בעצמכם
import numpy as np
import pandas as pd
from sklearn.cluster import AgglomerativeClustering
# מיקומם של 109 צמחי תות בר באחו (במטרים): שלושה מקבצים ושביל
rng = np.random.default_rng(4)
plants = np.round(np.concatenate([
rng.normal([2, 3], 0.8, size=(40, 2)),
rng.normal([9, 4], 1.0, size=(35, 2)),
rng.normal([6, 10], 0.9, size=(25, 2)),
np.column_stack([np.linspace(3, 8, 9), np.linspace(3.2, 4, 9)]) + rng.normal(0, 0.15, size=(9, 2)),
]), 2)
linkages = ["ward", "complete", "average", "single"]
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה בלתי מונחית
תרגלו בעצמכם: קומפיילר Python אונליין