Menu
CoddyTech

רכיבים כדפוסים

חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 30 מתוך 51.

על מה הסתכלה PCA? כל רכיב מורכב מ־64 משקולות, אחת לכל פיקסל, ו־components_ מכיל שורה אחת לכל רכיב:

pca = PCA(n_components=4).fit(X)
print(pca.components_.shape)

הדבר מדפיס (4, 64). שינוי הצורה של שורה למערך בגודל 8 על 8 הופך אותה לתמונה. cmap="gray_r" פירושו גווני אפור הפוכים: משקלים גדולים כהים, ומשקלים שליליים בהירים:

ax.imshow(pca.components_[0].reshape(8, 8), cmap="gray_r")

ארבעת הרכיבים הראשונים של הספרות כתמונות בגודל 8 על 8, אפור כאשר המשקל קרוב לאפס, כהה כאשר הוא גדול, ובהיר כאשר הוא שלילי

רכיב 1 כהה במקומות שבהם ל־4 ול־6 יש דיו, ולכן הם ממוקמים בצד ימין של המפה. סריקה מקבלת ניקוד גבוה כשהדיו שלה נופל על פיקסלים כהים.

challenge icon

אתגר

בינוני

מורה לקליגרפיה רוצה לראות את הדרכים שבהן אנשים כותבים ספרה אחת. התוכנית קוראת את הספרה, ותוכנית הפתיחה שומרת את הסריקות שלה ב־X.

  1. התאם PCA עם 3 רכיבים ל־X.
  2. צייר את הרכיב i על axs[i] כתמונה בגודל 8 על 8 עם cmap="gray_r", שכותרותיהן Component 1 עד Component 3.
  3. הצג את התרשים.

עבור הספרות 2, מתקבלת התמונה הזו. לאחר מכן Coddy מתאר את הלוחות שלך:

שלוש תמונות רכיבים בגודל 8 על 8 של הספרה 2 בכתב יד, שכותרותיהן Component 1, Component 2 ו־Component 3, ולכל אחת מהן משיכות כהות ובהירות משלה

נסו בעצמכם

import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA

# כל סריקה של ספרה אחת, הנקראת מהקלט: 64 פיקסלים בכל שורה
d = int(input())
digits = load_digits()
X = digits.data[digits.target == d]

# אין לשנות את השורה שלמטה
fig, axs = plt.subplots(1, 3)

# כתבו את הקוד שלכם למטה
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה למידה בלתי מונחית

תרגלו בעצמכם: קומפיילר Python אונליין