צמצום באמצעות PCA
חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 44 מתוך 51.
64 פיקסלים הם יותר ממה שהספרות צריכות. PCA יכול לכוון לחלק מהשונות במקום למספר רכיבים:
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. שינוי קנה המידה היה מגדיל את פיקסלי הקצה הכמעט ריקים והופך אותם למאפיינים מלאים.
אתגר
בינוניהגיע הזמן לצמצם את הסריקות. התוכנית קוראת את שיעור השונות שיש לשמור, למשל 0.8.
- הדפיסו כמה רכיבים PCA דורש עבור השיעור הזה בפיקסלים הגולמיים, ואז בפיקסלים שעברו שינוי קנה מידה.
- השאירו את הגרסה שדורשת פחות רכיבים: הדפיסו את שמה ואת הצורה של הנתונים המצומצמים שלה.
עבור 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())
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה בלתי מונחית
תרגלו בעצמכם: קומפיילר Python אונליין