CodeBlanks Logo Icon CodeBlanks

n_components

n_components, indirgenecek boyut sayısını belirler.

n_components seçimi

n_components bir tam sayı (bileşen sayısı) ya da 0-1 arası bir oran olabilir. Oran verilirse PCA o kadar varyansı koruyan en az bileşeni kendisi seçer:

pca = PCA(n_components=0.9).fit(Xs)   # varyansın %90'ı
print(pca.n_components_)               # seçilen bileşen sayısı

Görselleştirme için 2 ya da 3, model öncesi sıkıştırma için %90-95 varyans yaygın seçimlerdir.

Pipeline içinde seçim

Bileşen sayısı bir hiperparametredir; en doğru seçim, sonraki modelin başarısına bakarak çapraz doğrulamayla yapılır:

pipe = make_pipeline(StandardScaler(), PCA(), LogisticRegression(max_iter=1000))
gs = GridSearchCV(pipe, {"pca__n_components": [2, 4, 6, 8]}, cv=5).fit(X, y)
print(gs.best_params_)

Varyans oranı kural değil başlangıç noktasıdır; az varyanslı bir bileşen sınıfları ayıran bilgiyi taşıyor olabilir.

Uygulama Oranla seçim

Ölçekli şarap verisinde n_components 0.8, 0.9 ve 0.95 için PCA eğit. Her satırda oranı ve seçilen bileşen sayısını (n_components_) 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 oran in [0.8, 0.9, 0.95]:
    print(oran, PCA(n_components=oran).fit(Xs).n_components_)

Beklenen çıktı

0.8 5
0.9 8
0.95 10

Soru ve cevaplar

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

1 <code>PCA(n_components=0.95)</code> ne yapar?

  • Varyansın %95'ini koruyan en az bileşeni seçer Doğru cevap
  • 0.95 bileşen tutar
  • Özelliklerin %95'ini atar
  • Hata verir

Açıklama: Seçilen sayı fit sonrası n_components_ özniteliğindedir.

2 Bileşen sayısını ızgarada ara.

Soru
gs = GridSearchCV(pipe, {"____": [2, 4, 6]}, cv=5)
Cevap
gs = GridSearchCV(pipe, {"pca__n_components": [2, 4, 6]}, cv=5)

Açıklama: make_pipeline'da PCA adımının adı "pca"dır.

3 Değerleri eşleştir.

Kavram Anlamı
n_components=2 Görselleştirme
n_components=0.95 Varyans oranıyla seçim
n_components_ Seçilen sayı
pca__n_components Izgara parametresi

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