Variance threshold
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 82/112
- 5 dk
Variance threshold, düşük varyanslı özellikleri çıkarır.
VarianceThreshold
En basit filtre: varyansı bir eşiğin altındaki sütunları atmak. Sabit ya da neredeyse sabit sütunlar hiçbir modele bilgi vermez:
from sklearn.feature_selection import VarianceThreshold
sec = VarianceThreshold(threshold=0.01)
X2 = sec.fit_transform(X)
print(sec.get_support()) # hangi sütunlar tutulduVaryans ölçeğe bağlıdır; bu yüzden eşik ölçeklemeden önce uygulanır (ölçekli veride tüm varyanslar 1 olur). 0/1 sütunlarda varyans p(1-p)'dir.
get_support
Tüm scikit-learn seçicileri get_support() ile boolean maske, get_support(indices=True) ile tutulan sütunların indekslerini verir. Pipeline içinde kullanılırlar ve get_feature_names_out ile ad takibi yapılır:
print(sec.get_support(indices=True))
print(sec.variances_.round(3))Varyans eşiği hedefe bakmaz; bu yüzden gürültü sütunlarını ayıramaz, yalnızca sabitleri atar.
Uygulama Sabit sütunları at
Rakam verisinde VarianceThreshold(threshold=0) uygula. Kalan sütun sayısını ve atılan sütunların indekslerini (~sec.get_support() ile) alt alta yazdır.
Başlangıç kodu
import numpy as np
from sklearn.datasets import load_digits
from sklearn.feature_selection import VarianceThreshold
X, y = load_digits(return_X_y=True)
# buraya yazÖrnek çözüm
import numpy as np
from sklearn.datasets import load_digits
from sklearn.feature_selection import VarianceThreshold
X, y = load_digits(return_X_y=True)
sec = VarianceThreshold(threshold=0)
X2 = sec.fit_transform(X)
print(X2.shape[1])
print(np.where(~sec.get_support())[0])Beklenen çıktı
61 [ 0 32 39]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Değerlerinin %99'u 0 olan bir 0/1 sütununun varyansı yaklaşık kaçtır?
- 0
- 0.0099 Doğru cevap
- 0.99
- 0.5
Açıklama: p(1-p) = 0.01 · 0.99 ≈ 0.0099.
2 Tutulan sütunların indekslerini al.
idx = sec.get_support(____=True)
idx = sec.get_support(indices=True)
Açıklama: indices=True maske yerine indeks dizisi döndürür.
3 Kavramları eşleştir.
| Kavram | Anlamı |
|---|---|
VarianceThreshold |
Sabitleri atar |
get_support() |
Boolean maske |
variances_ |
Sütun varyansları |
p(1-p) |
0/1 sütun varyansı |