đ TehtĂ€vĂ€t
TehtÀvÀ: Automaattivaihteet (Pt. 1)
Kouluta Decision Tree ja/tai Random Forest -luokittelumalli. TehtÀvÀnÀsi on luoda koneoppimismalli, joka pyrkii ennustamaan muiden kenttien avulla, onko kyseessÀ automaattiauto. Datan voit ladata alkuperÀisestÀ lÀhteestÀÀn, Kaggle: Car Features and MSRP tai repositoriosta, jossa sitÀ jakavat edelleen sitÀ kÀyttÀneet. NÀistÀ yksi on: Github: Car-Prices-Prediction
Huomaa, ettÀ datasettiÀ on lÀhtökohtaisesti kÀytetty MSRP:n (Manufacturer's Suggested Retail Price) ennustamiseen, mutta tÀssÀ tehtÀvÀssÀ keskitymme vain automaattiauton tunnistamiseen. KÀytÀmme siis eri ennustettavaa muuttujaa kuin useimmissa Kaggle-koodeissa, joita tulet löytÀmÀÀn datasettiin liittyen. TÀmÀ ei poista sitÀ, ettÀ saatat saada hyviÀ ideoita datan kÀsittelyyn muista repositorioista.
KÀÀnnÀ arvot esimerkiksi seuraavalla tavalla kahdeksi luokaksi:
AlkuperÀinen arvo (str) | Uusi arvo (bool) | N samplea |
---|---|---|
AUTOMATIC | 1 | 8266 |
MANUAL | 0 | 2935 |
AUTOMATED_MANUAL | 0/1 | 626 |
DIRECT_DRIVE | (drop) | 68 |
UNKNOWN | (drop) | 56 |
Pudota siis rivit, joissa Transmission Type on DIRECT_DRIVE
tai UNKNOWN
. Sen sijaan arvon AUTOMATED_MANUAL
voit kÀÀntÀÀ joko 0:ksi tai 1:ksi. Kokeile, kumman kanssa saat paremman tuloksen. Arvo 1
viittaa siis True
arvoon, eli automaattiautoon.
Jos kÀytÀt jotakin muuta jakoa, kuten luokittelet UNKNOWN
tai DIRECT_DRIVE
vaihteistot manuaaliseksi, dokumentoi se oppimispÀivÀkirjassasi ja perustele valintasi.
Tip
Dataa on kÀytetty useissa eri projekteissa, koska se löytyy KagglestÀ. MikÀli et tiedÀ, mistÀ aloittaa eksploratiivinen data-analyysi ja featureiden muokkaus tai valinta, voit etsiÀ apua Kagglesta. Valtaosa esimerkeistÀ ennustaa hintaa, mutta tÀstÀ huolimatta datan kÀsittely on muiden muuttujien osalta samanlaista. Jos et halua ladata dataa Kagglesta, voit ladata sen myös esimerkiksi Github: Car-Prices-Prediction -repositoriosta, mistÀ löytyy myös esimerkkiÀ datan kÀsittelystÀ.
VinkkejÀ
Kirjastot
Aivan kuten aiemmassa tehtÀvÀssÀ, myös tÀssÀ tulet tarvisemaan scikit-learn
-kirjastoa. TÀmÀ pÀtee kaikkiin kurssin tehtÀviin. Kenties seuraavista löytyy apuja?
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn import metrics
from sklearn.metrics import classification_report
One Hot Encoding
KentÀt Make
ja Model
ovat kategorisia muuttujia, joilla on todella suuri mÀÀrÀ uniikkeja arvoja. TÀmÀ pÀtee myös muihin kenttiin, mutta nÀmÀ kentÀt ovat erityisen ongelmallisia, joten keskitytÀÀn niihin tÀssÀ vinkissÀ.
Tip
Kuinka paljon? SelvitÀ! Tee eksploratiivinen data-analyysi datasetille.
KentÀt eivÀt ole numeerisia vaan kategorisia. Ne on muunnettava numeeriseen muotoon. Toisin kuin vaikkapa "Transmission Type", jossa on vain muutama uniikki arvo, nÀiden kenttien arvot omaavat suuren granulariteetin eli uniikkien arvojen mÀÀrÀn. TÀmÀ tuskin on mallillle hyvÀksi: mallin tulee oppia generalisoimaan ongelma, joten on ongemallista, jos datasetissÀ on vaikkapa vain kolme Bugatti Veyronia.
Kenties sinun siis kannattaa kÀsitellÀ data siten, ettÀ kÀytÀt one hot encoding -menetelmÀÀ, joka muuttaa kategoriset muuttujat numeeriseen muotoon siten, ettÀ jokainen uniikki arvo saa oman sarakkeensa, mutta pidÀt vain n yleisintÀ. TÀmÀn voi tehdÀ monella tavalla, mutta yksi tapa on OneHotEncoder(..., min_frequency=10), jolloin kaikki ne arvot, jotka esiintyvÀt alle 10 kertaa, muutetaan luokan infrequent
edustajaksi.
TÀhÀn soveltuu esimerkiksi seuraava luokka:
Tip
LisĂ€haasteena sarakkeilla on keskinĂ€inen, toiminnallinen riippuvuus (Make â Model). TĂ€mĂ€ one-to-many suhde, jossa Make on Modelin ylĂ€luokka, voi vaikuttaa siihen, kuinka One Hot Encoding kannattaa toteuttaa.
Keksitkö tavan yhdistÀÀ nÀiden tiedot? Jos keksit, muistathan vertailla mallin suorituskykyÀ ennen ja jÀlkeen tÀmÀn yhdistÀmisen. Onko mallin tarkkuus parempi vai huonompi? Vai pitÀisikö jompi kumpi kenttÀ pudottaa kokonaan?
Tulkittavuus
Puumallien yksi etu, varsinkin neuroverkkoihin nÀhden, on niiden tulkittavuus (engl. interpretability, explainability). Tutustu seuraaviin tapoihin tulkita eri kenttien vaikutusta mallin ennusteeseen:
feature_importances_
-attribuutti, joka kertoo, kuinka paljon kukin piirre vaikuttaa mallin ennusteeseen.plot_tree
-funktio, joka piirtÀÀ puun rakenteen ja nÀyttÀÀ, miten eri kentÀt vaikuttavat ennusteeseen.
Voit kokeilla myös haastaa itseÀsi edistyneemmillÀ tavoilla, kuten SHAP ja sen violin summary plot, mutta ÀlÀ keskity niihin liikaa. Muista, ettÀ oppimispÀivÀkirjan merkinnÀn aihe ovat puumallit.