fit_transform
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 72/112
- 5 dk
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
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
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.
X_geri = pca.____(Z)
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 |