Menu
CoddyTech

צמצום באמצעות PCA

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

‏64 פיקסלים הם יותר ממה שהספרות צריכות. PCA יכול לכוון לחלק מהשונות במקום למספר רכיבים:

עקומה עולה של חלק השונות של הספרות שנשמר על ידי n הרכיבים הראשונים, תלולה בתחילה ואז מתמתנת; קו מקווקו ב-90% פוגש אותה ב-21 רכיבים

n_components=0.9 שומר על מספר הרכיבים הקטן ביותר שמכיל 90%:

pca = PCA(n_components=0.9)
X_small = pca.fit_transform(X)
print(pca.n_components_, X_small.shape)

הפעולה מדפיסה 21 (1797, 21): שליש מהמספרים, רוב התמונה.

אין כאן סקלר: כל פיקסל משתמש באותה יחידת מידה, כמות הדיו נעה בין 0 ל־16. שינוי קנה המידה היה מגדיל את פיקסלי הקצה הכמעט ריקים והופך אותם למאפיינים מלאים.

challenge icon

אתגר

בינוני

הגיע הזמן לצמצם את הסריקות. התוכנית קוראת את שיעור השונות שיש לשמור, למשל 0.8.

  1. הדפיסו כמה רכיבים PCA דורש עבור השיעור הזה בפיקסלים הגולמיים, ואז בפיקסלים שעברו שינוי קנה מידה.
  2. השאירו את הגרסה שדורשת פחות רכיבים: הדפיסו את שמה ואת הצורה של הנתונים המצומצמים שלה.

עבור 0.6:

Raw pixels: 7 components
Scaled pixels: 11 components
Keep: raw pixels, shape (1797, 7)

מכאן ואילך, הפרויקט שומר על 80% מהשונות.

נסו בעצמכם

from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

# מתוך Look at the Digits: 1,797 סריקות של 64 פיקסלים, ערכי דיו מ־0 עד 16
digits = load_digits()
X = digits.data
y = digits.target

# שיעור השונות שיש לשמר, למשל 0.8
share = float(input())

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

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

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

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