Makine Öğrenmesi
Recursive elimination
RFE, en az önemli özelliği yinelemeli olarak çıkarır.
Recursive feature elimination
RFE bir modeli tüm özelliklerle eğitir, en önemsiz özelliği (en küçük katsayı ya da önem) atar ve istenen sayıya kadar tekrarlar. Özellikleri birlikte değerlendirdiği için tek değişkenli filtrelerden daha akıllıdır:
from sklearn.feature_selection import RFE
rfe = RFE(LogisticRegression(max_iter=1000), n_features_to_select=6, step=1).fit(Xs, y)
print(rfe.support_)
print(rfe.ranking_) # 1 = seçildi, büyük sayı = erken atıldı
Model katsayılarına dayandığı için ölçekleme önemlidir; step her turda kaç özellik atılacağıdır.
RFECV
Kaç özellik tutulacağı bilinmiyorsa RFECV her adımda CV skorunu ölçer ve en iyi sayıyı kendisi seçer:
from sklearn.feature_selection import RFECV
rc = RFECV(LogisticRegression(max_iter=1000), step=1, cv=5).fit(Xs, y)
print(rc.n_features_)
print(rc.cv_results_["mean_test_score"].round(3))
Maliyeti yüksektir: her özellik sayısı için CV yapılır. Çok sütunlu veride step büyütülür.
Uygulama RFE ile seçim
Ölçekli yapay veride RFE(LogisticRegression(max_iter=1000), n_features_to_select=6) eğit. Seçilen indeksleri (np.where(rfe.support_)[0]) ve bunlardan kaçının ilk 6 sütunda olduğunu alt alta yazdır.
Örnek çözümü göster
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.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import RFE
Xs = StandardScaler().fit_transform(X)
rfe = RFE(LogisticRegression(max_iter=1000), n_features_to_select=6).fit(Xs, y)
idx = np.where(rfe.support_)[0]
print(idx)
print((idx < 6).sum())
Kendini test et
-
<code>ranking_</code> değeri 1 olan özellik ne anlama gelir?
- İlk atılandır
- En kötüsüdür
- Hesaplanmamıştır
- Seçilen özelliklerdendir
Cevabı göster
Seçilen özelliklerdendir — Seçilenlerin hepsi 1 sırasını alır; atılanlar atılma sırasına göre büyür.
-
Her turda 2 özellik at.
rfe = RFE(model, n_features_to_select=5, ____=2)
Cevabı göster
rfe = RFE(model, n_features_to_select=5, step=2)
-
Öznitelikleri eşleştir.
- support_
- Seçilenlerin maskesi
- ranking_
- Atılma sırası
- n_features_
- RFECV'nin seçtiği sayı
- step
- Tur başına atılan
Sıradaki ders: Feature importance