CodeBlanks Logo Icon CodeBlanks

fit_transform

fit_transform, PCA'yı eğitir ve veriyi dönüştürür.

fit_transform ve inverse_transform

fit_transform bileşenleri öğrenir ve veriyi bileşen uzayına taşır. inverse_transform geri döndürür; atılan bileşenlerin bilgisi kayıp olduğu için sonuç özgün verinin bir yaklaşığıdır:

pca = PCA(n_components=4)
Z = pca.fit_transform(Xs)            # (178, 4)
X_geri = pca.inverse_transform(Z)     # (178, 13), yaklaşık
hata = ((Xs - X_geri) ** 2).mean()
print(round(hata, 3))

Yeniden oluşturma hatası atılan varyansla orantılıdır; anomali tespitinde de kullanılır: zor yeniden oluşturulan örnekler sıradışıdır.

Bileşen uzayında model

PCA çoğu zaman bir modelden önce kullanılır: daha az boyut, daha hızlı eğitim ve ilişkili özelliklerin birleştirilmesi. Doğru kullanım yine pipeline içindedir ki PCA yalnızca eğitim verisinde öğrensin:

pipe = make_pipeline(StandardScaler(), PCA(n_components=5), LogisticRegression(max_iter=1000))
print(cross_val_score(pipe, X, y, cv=5).mean())

Bileşenler artık özgün özellikler değildir; "1. bileşen" gibi soyut sütunlardır ve yorumlanmaları zorlaşır.

Uygulama Yeniden oluşturma hatası

Bileşen sayısı 2, 6 ve 13 için PCA ile ölçekli veriyi indirip geri döndür. Her satırda bileşen sayısını ve ortalama kare yeniden oluşturma hatasını round(..., 3) ile yazdır.

Başlangıç kodu

model.py
import numpy as np
from sklearn.datasets import load_wine
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

X, y = load_wine(return_X_y=True)
Xs = StandardScaler().fit_transform(X)

# buraya yaz

Örnek çözüm

model.py
import numpy as np
from sklearn.datasets import load_wine
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

X, y = load_wine(return_X_y=True)
Xs = StandardScaler().fit_transform(X)

for k in [2, 6, 13]:
    pca = PCA(n_components=k)
    X_geri = pca.inverse_transform(pca.fit_transform(Xs))
    print(k, round(((Xs - X_geri) ** 2).mean(), 3))

Beklenen çıktı

2 0.446
6 0.149
13 0.0

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Tüm bileşenler tutulursa <code>inverse_transform(transform(X))</code> neyi verir?

  • Sıfır matrisi
  • Yaklaşık bir X
  • Hata
  • X'in kendisini (kayan nokta hassasiyetinde) Doğru cevap

Açıklama: Tam döndürme kayıpsızdır; geri dönüşüm de kayıpsızdır.

2 Bileşen uzayından özgün uzaya dön.

Soru
X_geri = pca.____(Z)
Cevap
X_geri = pca.inverse_transform(Z)

Açıklama: inverse_transform, Z · components_ + mean_ hesaplar.

3 Yöntemleri eşleştir.

Kavram Anlamı
fit_transform Öğren ve indir
transform Yeni veriyi indir
inverse_transform Yaklaşık geri dönüş
yeniden oluşturma hatası Atılan bilgi

Orta seviye bölümündeki tüm dersler