מתן שמות לקבוצות
חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 46 מתוך 51.
לאשכולות יש מספרים, לא שמות. עכשיו אפשר להשתמש בתוויות: טבלת שכיחויות צולבת סופרת כמה ספרות מכל סוג נמצאות בכל אשכול, כמו הספרות 1, 7 ו־9 האלה ב־3 אשכולות:
תן לכל אשכול שם על שם הספרה הנפוצה ביותר בו. הסריקות שלו של הספרה הזאת נחשבות לסיווג נכון:
ct = pd.crosstab(km.labels_, y)
names = ct.idxmax(axis=1) # העמודה הגדולה ביותר בכל שורה
right = ct.max(axis=1).sum()
print(names.tolist(), right)זה מדפיס [9, 7, 1] 496: 496 מתוך 541 סריקות זוהו נכון, לפי קבוצות שנמצאו ללא תווית אחת.
אתגר
בינוניתנו שמות ל-10 האשכולות שלכם. קוד הפתיחה כולל את km, שאומן ללא תוויות; עכשיו תוכלו להשתמש בספרות שב-y.
- צרו טבלת הצלבה של האשכולות מול
yותנו לכל אשכול את שם הספרה הנפוצה ביותר בו. - לפי סדר השמות, הדפיסו עבור כל אשכול את מספר הסריקות ששויכו נכון, את גודל האשכול ואת אחוז הסריקות ששויכו נכון, כאחוז שלם.
- הדפיסו את מספר הסריקות ששויכו נכון בסך הכול, ואת האחוז עם ספרה אחת אחרי הנקודה.
עבור 5 אשכולות:
Cluster named 0: 175 of 177 scans (99%)
Cluster named 2: 160 of 367 scans (44%)
Cluster named 3: 168 of 531 scans (32%)
Cluster named 6: 179 of 359 scans (50%)
Cluster named 7: 176 of 363 scans (48%)
Named right without labels: 858 of 1797 scans (47.7%)איזה מהאשכולות שלכם הוא החלש ביותר, ומה מסתתר בו?
נסו בעצמכם
import pandas as pd
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
# מתוך התבוננות בספרות: 1,797 סריקות של 64 פיקסלים, כמות דיו מ-0 עד 16
digits = load_digits()
X = digits.data
y = digits.target
# מתוך צמצום בעזרת PCA: 80% מהשונות ב-13 מספרים לכל סריקה
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)
# מתוך קיבוץ הספרות: 10 אשכולות, שנמצאו ללא תוויות
km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה בלתי מונחית
תרגלו בעצמכם: קומפיילר Python אונליין