K-Means ב-scikit-learn
חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 4 מתוך 51.
scikit-learn מריץ עבורך את כל לולאת k-means, כאן על 180 תפוחים שקיבלו ציונים לפי מתיקות ופריכות:
התאמה באמצעות X בלבד, ללא y:
from sklearn.cluster import KMeans
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X)
print(km.labels_[:8])
print(km.cluster_centers_.round(1))הדבר מדפיס את מספרי האשכולות של 8 שורות, ולאחר מכן שורה אחת לכל מרכז:
[2 0 0 1 2 0 1 1]
[[7. 7.5]
[6. 3. ]
[2.9 8.1]]n_init=10 מנסה 10 אתחולים ושומר את האשכול ההדוק ביותר. km.predict([[8.6, 9.2]]) משייך את התפוח החדש למרכז הקרוב ביותר, [0].
labels = km.fit_predict(X) עושה את שני הדברים בבת אחת: מתאימה, ואז מחזירה את labels_.
המספרים הם רק שמות: בנתונים אחרים, אשכול 0 יכול להיות כל קבוצה.
אתגר
קלביולוג תיעד 150 צלילות של לווייתן גדול־סנפיר אחד: משך הצלילה והמנוחה על פני המים שאחריה. האם יש סוגים שונים של צלילות? קוד הפתיחה מכין את התרשים.
- התאם את KMeans ל־
X: 3 אשכולות,n_init=10,random_state=0. - הצג כל אשכול כקבוצה נפרדת בתרשים פיזור, עם תוויות מ־
cluster 0עדcluster 2. - סמן את המרכזים בכוכבים שחורים, עם התווית
centers. הוסף מקרא והצג את התרשים.
כך זה נראה, אצל לווייתן אחר:
Coddy מתאר את התרשים שלך.
נסו בעצמכם
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# אין לשנות את השורות שלהלן
rng = np.random.default_rng(14)
dive = np.concatenate([rng.normal(4, 1.0, 60), rng.normal(12, 2.0, 50), rng.normal(2.5, 0.7, 40)])
rest = np.concatenate([rng.normal(1.5, 0.5, 60), rng.normal(4, 1.0, 50), rng.normal(8, 1.5, 40)])
# 150 צלילות של לווייתן גדול־סנפיר אחד: משך הצלילה ומשך המנוחה על פני המים אחריה, בדקות
X = np.round(np.clip(np.column_stack([dive, rest]), 0.5, None), 1)
fig, ax = plt.subplots()
ax.set_title("Whale Dives")
ax.set_xlabel("Dive (min)")
ax.set_ylabel("Surface rest (min)")
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה בלתי מונחית
1מציאת קבוצות
למידה ללא תוויותמדידת דמיוןK-Means באופן ידניK-Means ב-scikit-learnסיכום: חברי חדר הכושרתרגלו בעצמכם: קומפיילר Python אונליין