Metoder för feature-urval
Filtermetoder (varians, korrelation), wrapper-metoder (RFE) och inbäddade metoder (L1-reguljärisering).
Metoder för feature-urval är en gratis lektion i Lär Er AI med Python på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lär Er AI med Python, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.
Varför välja features
Featureselektion behåller endast de mest användbara kolumnerna. Färre features innebär snabbare träning, mindre överanpassning och enklare tolkning. Att ta bort brus förbättrar ofta även accuracy.
Tre metodfamiljer
Metoder för featureselektion delas in i tre grupper:
- Filter rangordnar features efter ett statistiskt mått (snabba och modelloberoende)
- Wrapper söker efter delmängder genom att träna modeller (långsamma och träffsäkra)
- Embedded innebär att selektionen sker under modellträningen
VarianceThreshold
Det enklaste filtret: VarianceThreshold tar bort features vars varians ligger under ett gränsvärde. Nästan konstanta kolumner innehåller ingen information.
from sklearn.feature_selection import VarianceThreshold
sel = VarianceThreshold(threshold=0.01)
X_reduced = sel.fit_transform(X)
print("Kept:", X_reduced.shape[1], "of", X.shape[1])SelectKBest med f_classif
SelectKBest behåller de K features som fått högst poäng. Med f_classif används ett ANOVA F-test som mäter hur starkt varje feature hänger samman med klassetiketten.
from sklearn.feature_selection import SelectKBest, f_classif
sel = SelectKBest(score_func=f_classif, k=10)
X_best = sel.fit_transform(X, y)
print(sel.get_support(indices=True))Ömsesidig information
mutual_info_classif mäter alla typer av beroenden, inklusive ickelinjära, mellan en feature och målet. Till skillnad från F-testet fångar metoden ickelinjära samband som ANOVA missar.
from sklearn.feature_selection import SelectKBest, mutual_info_classif
sel = SelectKBest(score_func=mutual_info_classif, k=10)
X_mi = sel.fit_transform(X, y)Jämförelse mellan f_classif och mutual_info
f_classif är snabbt och upptäcker linjära samband; mutual_info_classif är långsammare men fångar ickelinjära samband. Om du misstänker komplexa samband bör du föredra ömsesidig information.
import numpy as np
from sklearn.feature_selection import f_classif, mutual_info_classif
f_scores, _ = f_classif(X, y)
mi_scores = mutual_info_classif(X, y)
print("F-test top:", np.argsort(f_scores)[::-1][:5])
print("MI top:", np.argsort(mi_scores)[::-1][:5])Rekursiv eliminering av features
RFE är en wrapper-metod: den tränar en modell, tar bort den minst betydelsefulla featuren och upprepar processen. Metoden använder modellens eget importance-mått för att rangordna features.
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
rfe = RFE(estimator=LogisticRegression(max_iter=1000), n_features_to_select=10)
rfe.fit(X, y)
print(rfe.support_)RFECV: välja antalet automatiskt
RFECV lägger till korsvalidering i RFE så att det optimala antalet features hittas utifrån valideringspoängen i stället för en fast gissning.
from sklearn.feature_selection import RFECV
from sklearn.ensemble import RandomForestClassifier
rfecv = RFECV(
estimator=RandomForestClassifier(),
cv=5,
scoring="accuracy",
)
rfecv.fit(X, y)
print("Optimal features:", rfecv.n_features_)SelectFromModel med Lasso
Inbäddad selektion: Lasso (L1) krymper oviktiga koefficienter till exakt noll. SelectFromModel behåller sedan endast de koefficienter som inte är noll.
from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import Lasso
sel = SelectFromModel(Lasso(alpha=0.01))
sel.fit(X, y)
X_lasso = sel.transform(X)
print("Kept:", X_lasso.shape[1])SelectFromModel med trädens importans
SelectFromModel fungerar även med alla estimatorer som exponerar feature_importances_, till exempel random forests. Ange ett threshold som "mean" eller "median".
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestClassifier
sel = SelectFromModel(
RandomForestClassifier(n_estimators=200),
threshold="median",
)
sel.fit(X, y)Välja metod
Börja med billiga filter (VarianceThreshold, SelectKBest) för att ta bort uppenbart skräp. Använd inbäddad SelectFromModel för en bra avvägning. Spara RFECV tills högsta möjliga accuracy är viktigast och beräkningsresurserna räcker till.
Snabbkontroll
Testa era kunskaper om featureselektion.
Sammanfattning
Sammanfattning: Featureselektion omfattar filtermetoder (VarianceThreshold, SelectKBest med f_classif eller mutual_info_classif), wrapper-metoder (RFECV) och inbäddade metoder (SelectFromModel med Lasso eller trädens featureimportans). Filter är snabbast; RFECV är mest träffsäkert. Använd ömsesidig information för ickelinjära samband.
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 53
- Lektioner
- 225
Vanliga frågor
Är lektionen ”Metoder för feature-urval” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lär Er AI med Python, inklusive ”Metoder för feature-urval”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.
Vad lär jag mig i ”Metoder för feature-urval”?
Filtermetoder (varians, korrelation), wrapper-metoder (RFE) och inbäddade metoder (L1-reguljärisering). Ni övar på Lär Er AI med Python med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Lär Er AI med Python?
Du behöver inga förkunskaper. Utbildningen i Lär Er AI med Python på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Metoder för feature-urval”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Lär Er AI med Python-lektionen?
Ja. Varje Lär Er AI med Python-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Metoder för feature-urval
- Skapa interaktions- och polynomfeatures
- Målkodning och avancerad hantering av kategoriska data
- Automatiserad feature engineering med Featuretools