Innholdsfortegnelse:
- Velge ved univariate tiltak
- Når du bruker et univariat valg, må du selv bestemme hvor mange variabler som skal holdes: Greedy utvalg reduserer automatisk antall funksjoner involvert i en læringsmodell på grunnlag av deres effektive bidrag til ytelse målt ved feilmåling.
Video: Python Web Apps with Flask by Ezra Zigmond 2025
Velge de riktige variablene i Python kan forbedre læringsprosessen i datavitenskap ved å redusere mengden støy (ubrukelig informasjon) som kan påvirke elevens estimater. Variabelt utvalg kan derfor effektivt redusere variansen av spådommer. For å involvere bare de nyttige variablene i trening og utelate de overflødige, kan du bruke disse teknikkene:
-
Univariate approach: Velg variablene mest relaterte til målutfallet.
-
Greedy eller bakover tilnærming: Bare hold de variablene du kan fjerne fra læringsprosessen uten å skade ytelsen.
Velge ved univariate tiltak
Hvis du bestemmer deg for å velge en variabel ved sitt tilknytningsnivå med målet, gir klassen SelectPercentile en automatisk prosedyre for å beholde bare en viss prosentandel av de beste tilknyttede funksjonene. De tilgjengelige beregningene for foreningen er
-
f_regression: Brukes kun for numeriske mål og basert på lineær regresjonsytelse.
-
f_classif: Brukes kun for kategoriske mål og basert på Analyse av Varians (ANOVA) statistisk test.
-
chi2: Utfører chi-kvadratstatistikken for kategoriske mål, noe som er mindre fornuftig for det ikke-lineære forholdet mellom den prediktive variabelen og dens mål.
Når du vurderer kandidater for et klassifikasjonsproblem, har f_classif og chi2 det samme settet med toppvariabler. Det er fortsatt en god praksis å teste valgene fra begge foreningsstatistikkene.
Bortsett fra å bruke et direkte utvalg av de øverste prosentilforeningene, kan SelectPercentile også rangere de beste variablene for å gjøre det enklere å bestemme hvilken prosentil som skal utelukke en funksjon fra å delta i læringsprosessen. Klassen SelectKBest er analog i funksjonaliteten, men den velger de øverste k-variablene, hvor k er et tall, ikke en prosentil.
fra sklearn. feature_selection import VelgPercentile fra sklearn. feature_selection import f_regression Selector_f = SelectPercentile (f_regression, percentile = 25) Selector_f. fit (X, y) for n, s i zip (boston. feature_names, Selector_f. scores_): skriv ut 'F-score:% 3. 2 for funksjon% s '% (s, n) F-poengsum: 88. 15 for funksjon CRIM F-poengsum: 75. 26 for funksjon ZN F-poengsum: 153. 95 for funksjon INDUS F-poengsum: 15. 97 for funksjon har CHAS F-score: 112. 59 for funksjonen NOX F-score: 471. 85 for funksjon RM F-score: 83.48 for funksjon AGE F-score: 33. 58 for funksjonen DIS F-poengsum: 85. 91 for funksjon RAD F-poengsum: 141. 76 for funksjon TAX F-poengsum: 175. 11 for funksjon PTRATIO F-poengsum: 63. 05 for funksjon B F-score: 601. 62 for funksjonen LSTAT
Ved hjelp av nivået for tilknytningsutgang kan du velge de viktigste variablene for maskinlæringsmodellen din, men du bør passe på disse mulige problemene: > Noen variabler med høy tilknytning kan også være svært korrelert, og innføre duplisert informasjon, noe som virker som støy i læringsprosessen.
-
Noen variabler kan bli straffet, spesielt binære (variabler som indikerer status eller karakteristikk ved å bruke verdien 1 når den er til stede, 0 når den ikke er). Legg merke til at utgangen viser den binære variabelen CHAS som den minste assosiert med målvariabelen (men du vet fra tidligere eksempler at den er innflytelsesrik fra kryssvalideringsfasen).
-
Den univariate utvalgsprosessen kan gi deg en reell fordel når du har et stort antall variabler å velge mellom, og alle andre metoder blir uberegnelige for beregning. Den beste prosedyren er å redusere verdien av SelectPercentile med halvparten eller flere av de tilgjengelige variablene, redusere antall variabler til et håndterbart nummer, og dermed tillate bruk av en mer sofistikert og mer presis metode, for eksempel et grådig søk.
Bruke et grådig søk
Når du bruker et univariat valg, må du selv bestemme hvor mange variabler som skal holdes: Greedy utvalg reduserer automatisk antall funksjoner involvert i en læringsmodell på grunnlag av deres effektive bidrag til ytelse målt ved feilmåling.
RFECV-klassen, som passer til dataene, kan gi deg informasjon om antall nyttige funksjoner, peke på dem og transformere automatisk X-dataene ved hjelp av metoden forvandle til et redusert variabelt sett, som vist i Følgende eksempel:
fra sklearn. feature_selection import RFECV selector = RFECV (estimator = regresjon, cv = 10, scoring = "mean_squared_error") velger. passform (X, Y) print ("Optimal antall funksjoner:% d"% selector. n_features_) Optimal antall funksjoner: 6
Det er mulig å skaffe en indeks til den optimale variabelen sett ved å ringe attributten support_ fra RFECV klasse etter at du har passet den.
skriv ut boston. feature_names [velgeren. support_] ['CHAS' NOX "RM" DIS "PTRATIO" LSTAT "]
Legg merke til at CHAS er nå inkludert blant de mest forutsigbare funksjonene, som står i kontrast til resultatet fra det univariate søket. RFECV-metoden kan oppdage om en variabel er viktig, uansett om den er binær, kategorisk eller numerisk, fordi den direkte vurderer rollen som funksjonen spiller i prediksjonen.
RFECV-metoden er sikkert mer effektiv, sammenlignet med den -univariate tilnærmingen, fordi den vurderer høyt korrelerte funksjoner og er innstilt for å optimalisere evalueringsmålet (som vanligvis ikke er Chi-kvadrat eller F-score). Å være en grådig prosess, er det beregnende krevende og kan bare omtrentliggjøre det beste settet av prediktorer.
Som RFECV lærer det beste settet av variabler fra data, kan valget overfit, noe som skjer med alle andre maskinlæringsalgoritmer. Å prøve RFECV på forskjellige prøver av treningsdataene, kan bekrefte de beste variablene som skal brukes.
