CodeBlanks Logo Icon CodeBlanks

SelectKBest

SelectKBest, en iyi k özelliği istatistiksel teste göre seçer.

SelectKBest

SelectKBest, her özelliği hedefle tek tek ilişkisine göre puanlar ve en iyi k tanesini tutar. Puan fonksiyonu probleme göre seçilir:

from sklearn.feature_selection import SelectKBest, f_classif, mutual_info_classif
sec = SelectKBest(score_func=f_classif, k=6).fit(X, y)
print(sec.get_support(indices=True))
print(sec.scores_.round(1))

f_classif (ANOVA F) doğrusal ayrılmayı, mutual_info_classif her tür bağımlılığı ölçer. Regresyonda f_regression ve mutual_info_regression kullanılır.

Pipeline ve k seçimi

SelectKBest hedefe baktığı için pipeline dışında kullanılırsa ciddi sızıntı yaratır (pipeline dersindeki rastgele veri örneğini hatırla). k de bir hiperparametredir:

pipe = make_pipeline(StandardScaler(), SelectKBest(f_classif), LogisticRegression())
gs = GridSearchCV(pipe, {"selectkbest__k": [2, 4, 6, 10, 20]}, cv=5).fit(X, y)
print(gs.best_params_)

Böylece her katmanda seçim yalnızca o katmanın eğitim verisiyle yapılır.

Uygulama En iyi 6 özellik

Yapay veride SelectKBest(f_classif, k=6) eğit; seçilen sütun indekslerini yazdır. Ardından seçilenlerden kaçının gerçekten ilk 6 sütunda olduğunu yazdır.

Başlangıç kodu

model.py
import numpy as np
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=400, n_features=20, n_informative=4, n_redundant=2, shuffle=False, random_state=0)
from sklearn.feature_selection import SelectKBest, f_classif

# buraya yaz

Örnek çözüm

model.py
import numpy as np
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=400, n_features=20, n_informative=4, n_redundant=2, shuffle=False, random_state=0)
from sklearn.feature_selection import SelectKBest, f_classif

sec = SelectKBest(f_classif, k=6).fit(X, y)
idx = sec.get_support(indices=True)
print(idx)
print((idx < 6).sum())

Beklenen çıktı

[ 1  2  4  5 15 19]
4

Soru ve cevaplar

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

1 Tek değişkenli filtrelerin zayıflığı nedir?

  • Yalnızca birlikte bilgi taşıyan özellikleri kaçırabilirler Doğru cevap
  • Çok yavaştırlar
  • Hedefe bakmazlar
  • Sınıflandırmada çalışmazlar

Açıklama: Her özellik ayrı puanlanır; XOR gibi etkileşimler görünmez.

2 Karşılıklı bilgiyle puanla.

Soru
sec = SelectKBest(score_func=____, k=5)
Cevap
sec = SelectKBest(score_func=mutual_info_classif, k=5)

Açıklama: Karşılıklı bilgi doğrusal olmayan bağımlılıkları da yakalar.

3 Puan fonksiyonlarını eşleştir.

Kavram Anlamı
f_classif ANOVA F, sınıflandırma
f_regression Korelasyon tabanlı, regresyon
mutual_info_classif Her tür bağımlılık
chi2 Negatif olmayan sayımlar

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