Menu
CoddyTech

דחיסה ושחזור

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

ציוני הרכיבים של סריקה הם כמו מתכון: מתחילים מהסריקה הממוצעת, ואז מוסיפים כל תבנית כפול הציון שלה. inverse_transform משחזרת את המתכון בחזרה ל־64 פיקסלים:

pca = PCA(n_components=10).fit(X)
codes = pca.transform(X)                # 10 מספרים לכל סריקה
rebuilt = pca.inverse_transform(codes)  # שוב 64 פיקסלים

הנה שלוש סריקות שנבנו מחדש ממספרים הולך וגדל:

0, 3 ו-5, כל אחד מהם נבנה מחדש מ-2, 5, 10 ו-20 מספרים, ואז הסריקה האמיתית. מ-2 מספרים שלושתם נראים כמו כתמים מטושטשים דומים; מ-20 כל אחד מהם ברור

מעט מספרים נותנים טשטוש סביב הספרה הממוצעת; כל רכיב נוסף משחזר פרטים. עשרים מספרים במקום 64 כבר נראים ברורים.

challenge icon

אתגר

בינוני

עט חכם משדר כל ספרה בתור k מספרי PCA, שנקראים על ידי התוכנית. מה אובד?

  1. התאימו PCA עם k רכיבים על X. דחסו את כל הסריקות, ואז שחזרו אותן לתוך rebuilt.
  2. הדפיסו את השורות שלמטה; השגיאה היא ההפרש המוחלט הממוצע מ־X.
  3. ציירו את הסריקה החדשה ביותר, X[-1], על axs[0] ואת השחזור שלה על axs[1], שתיהן ב־gray_r. הציגו.

עבור 7:

Sent: 7 numbers per scan instead of 64
Average pixel error: 1.739

והוא מצייר את זה. לאחר מכן Coddy מתאר את הלוחות שלך:

שתי תמונות בגודל 8 על 8 זו לצד זו: הסריקה החדשה ביותר של העט, 8, והשחזור שלה מ־7 מספרים, 8 מטושטשת יותר

נסו בעצמכם

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

# 1,797 סריקות של 64 פיקסלים; הסריקה העדכנית ביותר של העט נמצאת בשורה האחרונה
digits = load_digits()
X = digits.data
k = int(input())

# אל תשנו את השורות שלמטה
fig, axs = plt.subplots(1, 2)
axs[0].set_title("Scan")
axs[1].set_title(f"Rebuilt from {k} numbers")

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

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

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

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