Menu
CoddyTech

PCA לפני מודל

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

פחות תכונות הופכות מודל למהיר יותר ומפחיתות את הרעש שהוא צריך להתמודד איתו. אפשר לשלב את PCA בצינור עיבוד, ממש לפני המודל:

for n in [2, 5, 10, 20, 40, 64]:
    model = make_pipeline(PCA(n_components=n), KNeighborsClassifier())
    print(n, f"{cross_val_score(model, X, y, cv=5).mean():.3f}")

עבור הספרות:

קו של דיוק k-NN עבור הספרות לפי מספר הרכיבים שנשמרו: 0.595 עם 2, 0.884 עם 5, 0.940 עם 10, ואז כמעט ללא שינוי, 0.958 עם 20 ועד 0.963 עם כל 64 הרכיבים

הדיוק מתייצב סביב 20: 44 הכיוונים האחרים כמעט לא מוסיפים דבר. כל קיפול מתאים את PCA לשורות האימון שלו, כך ששום דבר לא דולף.

יחידות מעורבות? שים/י קודם את StandardScaler(), כמו תמיד.

challenge icon

אתגר

בינוני

מעבדה לשמן זית מדרגת שמנים לפי האור שהם סופגים ב-36 אורכי גל, בתוספת 4 בדיקות מעבדה. מהו מספר התכונות הקטן ביותר שיספיק? התוכנית קוראת ערך slack.

  1. עבור כל n ב-sizes, בצעו אימות צולב (5 קיפולים) של צינור עיבוד: מתאם קנה מידה, PCA עם n רכיבים, LogisticRegression(max_iter=1000). הדפיסו כל ציון.
  2. הדפיסו את מספר הרכיבים הקטן ביותר שהציון שלהם נמצא בטווח slack מהציון הטוב ביותר.

עבור מעבדה אחרת ו-0.05:

2 components: 0.817
3 components: 0.833
4 components: 0.889
5 components: 0.928
10 components: 0.928
20 components: 0.917
40 components: 0.922
Fewest within 0.05 of the best: 4 components

נסו בעצמכם

import pandas as pd
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score

# 180 דגימות שמן זית: אור שנבלע ב-36 אורכי גל, 4 בדיקות מעבדה והדירוג
oils = pd.read_csv("oils.csv")
X = oils.drop(columns=["oil", "grade"])
y = oils["grade"]
sizes = [2, 3, 4, 5, 10, 20, 40]
slack = float(input())

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

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

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

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