Sådan transformeres målvariabler til regression i Python

Sådan transformeres målvariabler til regression i Python

Dataforberedelse er en stor del af anvendt maskinlæring.

Korrekt forberedelse af dine træningsdata kan betyde forskellen mellem middelmådige og ekstraordinære resultater, selv med meget enkle lineære algoritmer.

Udførelse af dataforberedelsesoperationer, såsom skalering, er relativt ligetil for inputvariabler og er blevet gjort rutine i Python via Pipeline scikit-learning-klassen.

Ved forudsigelige modelleringsproblemer med regression, hvor en numerisk værdi skal forudsiges, kan det også være kritisk at skalere og udføre andre datatransformationer på målvariablen. Dette kan opnås i Python ved hjælp af TransformedTargetRegressor klasse.

I denne vejledning opdager du, hvordan du bruger TransformedTargetRegressor til at skalere og transformere målvariabler til regression ved hjælp af scikit-lær Python-maskinlæringsbiblioteket.

Efter at have gennemført denne tutorial, vil du vide:

  • Betydningen af ​​skalering af input og måldata til maskinindlæring.
  • De to tilgange til anvendelse af datatransformer til målvariabler.
  • Sådan bruges TransformedTargetRegressor på et ægte regressionsdatasæt.

Start dit projekt med min nye bog Data Preparation for Machine Learning, inklusive trin-for-trin tutorials og Python kildekode filer til alle eksempler.

Lad os komme igang.

Sådan transformeres målvariabler til regression med Scikit-Learn

Sådan transformeres målvariabler til regression med Scikit-Learn
Foto af Don Henise, nogle rettigheder forbeholdes.

Vejledningsoversigt

Denne vejledning er opdelt i tre dele; de er:

  1. Betydningen af ​​dataskalering
  2. Sådan skaleres målvariabler
  3. Eksempel på brug af TransformedTargetRegressor

Betydningen af ​​dataskalering

Det er almindeligt at have data, hvor værdienes skala varierer fra variabel til variabel.

For eksempel kan en variabel være i fødder, en anden i meter osv.

Nogle maskinlæringsalgoritmer fungerer meget bedre, hvis alle variablerne skaleres til det samme interval, såsom at skalere alle variabler til værdier mellem 0 og 1, kaldet normalisering.

Dette påvirker algoritmer, der bruger en vægtet sum af input, som lineære modeller og neurale netværk, såvel som modeller, der bruger afstandsmålinger såsom understøttende vektormaskiner og k-nærmeste naboer.

Som sådan er det en god praksis at skalere inputdata og måske endda prøve andre datatransformationer som at gøre dataene mere normale (bedre tilpasning til en Gaussisk sandsynlighedsfordeling) ved hjælp af en effekttransformation.

Dette gælder også outputvariabler, kaldet målvariabler, såsom numeriske værdier, der forudsiges ved modellering af regressionsforudsigende modelleringsproblemer.

For regressionsproblemer er det ofte ønskeligt at skalere eller transformere både input- og målvariablerne.

Skalering af inputvariabler er ligetil. I scikit-læring kan du bruge skaleringsobjekterne manuelt eller den mere bekvemme rørledning, der giver dig mulighed for at kæde en række datatransformeringsobjekter sammen, inden du bruger din model.

Rørledningen passer til skalaobjekterne på træningsdataene for dig og anvender transformationen til nye data, f.eks. Når du bruger en model til at forudsige.

For eksempel:

Udfordringen er, hvad er den tilsvarende mekanisme til at skalere målvariabler i scikit-learning?

Vil du komme i gang med dataforberedelse?

Tag mit gratis 7-dages e-mail-crashkursus nu (med prøvekode).

Klik for at tilmelde dig og få også en gratis PDF Ebook-version af kurset.

Download dit GRATIS minikursus

Sådan skaleres målvariabler

Der er to måder, du kan skalere målvariabler på.

Den første er at administrere transformationen manuelt, og den anden er at bruge en ny automatisk måde til styring af transformationen.

  1. Transformer målvariablen manuelt.
  2. Transformer automatisk målvariablen.

1. Manuel transformation af målvariablen

Manuel styring af skaleringen af ​​målvariablen indebærer at oprette og anvende skaleringsobjektet på dataene manuelt.

Det involverer følgende trin:

  1. Opret transform-objektet, f.eks. En MinMaxScaler.
  2. Tilpas transformationen på træningsdatasættet.
  3. Anvend transformationen på toget og test datasæt.
  4. Inverter transformeringen på forudsagte forudsigelser.

For eksempel, hvis vi ønskede at normalisere en målvariabel, ville vi først definere og træne et MinMaxScaler-objekt:

Vi ville derefter omdanne toget og teste målvariabeldata.

Derefter passer vi til vores model og bruger modellen til at forudsige.

Før forudsigelserne kan bruges eller evalueres med en fejlmåling, bliver vi nødt til at invertere transformationen.

Dette er en smerte, da det betyder, at du ikke kan bruge bekvemmelighedsfunktioner i scikit-learning, såsom cross_val_score (), til hurtigt at evaluere en model.

2. Automatisk transformation af målvariablen

En alternativ tilgang er automatisk styring af transformering og invers transformation.

Dette kan opnås ved hjælp af TransformedTargetRegressor-objektet, der indpakker en given model og et skaleringsobjekt.

Det forbereder transformationen af ​​målvariablen ved hjælp af de samme træningsdata, der bruges til at passe til modellen, og anvender derefter den omvendte transformation på alle nye data, der leveres, når der kaldes forudsigelse (), og returnerer forudsigelser i den korrekte skala.

For at bruge TransformedTargetRegressor defineres den ved at angive modellen og transformobjektet, der skal bruges på målet; for eksempel:

Senere kan TransformedTargetRegressor-forekomsten være passende som enhver anden model ved at kalde funktionen fit () og bruges til at forudsige ved at kalde funktionen forudsige ().

Dette er meget nemmere og giver dig mulighed for at bruge nyttige funktioner som f.eks cross_val_score () at evaluere en model

Nu hvor vi er bekendt med TransformedTargetRegressor, lad os se på et eksempel på brug af det i et ægte datasæt.

Eksempel på brug af TransformedTargetRegressor

I dette afsnit vil vi demonstrere, hvordan man bruger TransformedTargetRegressor på et ægte datasæt.

Vi bruger Boston-regressionsproblemet i Boston, der har 13 input og et numerisk mål og kræver at lære forholdet mellem forstadskarakteristika og huspriser.

Datasættet kan downloades herfra:

Download datasættet, og gem det i din nuværende arbejdsmappe med navnet “bolig.csv“.

Når du ser i datasættet, skal du se, at alle variabler er numeriske.

Du kan lære mere om dette datasæt og betydningen af ​​kolonnerne her:

Vi kan bekræfte, at datasættet kan indlæses korrekt som et NumPy-array og opdele det i input- og outputvariabler.

Det komplette eksempel er angivet nedenfor.

Ved at køre eksemplet udskrives formen på datasættets input- og outputdele, der viser 13 inputvariabler, en outputvariabel og 506 rækker med data.

Vi kan nu forberede et eksempel på brug af TransformedTargetRegressor.

En naiv regressionsmodel, der forudsiger middelværdien af ​​målet på dette problem, kan opnå en gennemsnitlig absolut fejl (MAE) på ca. 6.659. Vi vil sigte mod at gøre det bedre.

I dette eksempel passer vi til et HuberRegressor-objekt og normaliserer inputvariablerne ved hjælp af en rørledning.

Dernæst definerer vi en TransformedTargetRegressor-forekomst og indstiller regressoren til rørledningen og transformeren til en forekomst af et MinMaxScaler-objekt.

Vi kan derefter evaluere modellen med normalisering af input- og outputvariablerne ved hjælp af 10 gange krydsvalidering.

Ved at binde dette alt sammen er det komplette eksempel angivet nedenfor.

Du kan også være interesseret i