n_components
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 71/112
- 5 dk
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
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 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.
gs = GridSearchCV(pipe, {"____": [2, 4, 6]}, cv=5)
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 |