CodeBlanks Logo Icon CodeBlanks

Variance threshold

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 tutuldu

Varyans ö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

model.py
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

model.py
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.

Soru
idx = sec.get_support(____=True)
Cevap
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ı

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