HyppÀÀ sisÀltöön

📝 TehtĂ€vĂ€t

TehtÀvÀ: Auton hinta

Koulut Linear Regression. KÀytÀ samaa autodataa aiemmissa tehtÀvissÀ, mutta tÀllÀ kertaa ennusta auton hintaa. Koska hinta on tyypillinen ennustettava muuttuja tÀssÀ datasetissÀ, löydÀt netistÀ referenssitoteutuksia. EthÀn kuitenkaan kopioi koodia! Kirjoita itse oma koodi, minkÀ jokaisen rivin merkityksen ymmÀrrÀt.

Vinkit

Pipeline

MikÀli olet aiemmin kÀyttÀnyt solu solulta etenevÀÀ vapaamuotoista koodia, kokeile tÀllÀ kertaa kÀyttÀÀ sklearn-kirjaston Pipeline- tai ColumnTransformer-luokkia. Tee kaikkesi, jotta koodi on helppolukuista ja helposti kehitettÀvissÀ. Ideaalitilanteessa esimerkiksi datan esikÀsittely hoituu omalla pipelinellÀ, joka voi nÀyttÀÀ vaikkapa

from sklearn.pipeline import Pipeline
from sklearn.base import BaseEstimator, TransformerMixin
from feature_engine import selection as fs

class SlugifyColumns(BaseEstimator, TransformerMixin):
    pass

class Mapper(BaseEstimator, TransformerMixin):
    pass

class SplitGroupType(BaseEstimator, TransformerMixin):
    pass

class Whatchamacallit(BaseEstimator, TransformerMixin):
    pass

pipeline = Pipeline(steps=[
    ('slugify_column_names', SlugifyColumns()),
    ('likert_to_number', Mapper(variables=[TARGET], mappings=LIKERT_MAPPINGS)),
    ('split_group_type', SplitGroupType(variables=GROUP_TYPE_COL)),
    ('drop_columns', fs.DropFeatures(DROP_COLUMNS)),
    ('sex_normalize', Whatchamacallit(variables=["foo"])),
])

df_preprocessed = pipeline.fit_transform(df)

Huomaa, ettÀ koska kaikki transformaatiot ovat omia luokkiaan, voit helposti lisÀtÀ niitÀ lisÀÀ, ja voit helposti uusiokÀyttÀÀ niitÀ eri pipelinen osissa. TÀmÀ tekee koodista helposti laajennettavaa ja muokattavaa. NiitÀ voi myös testata. Alla yksinkertainen kÀsikutoinen testi:

sgp_input = pd.DataFrame({
    'foo': [' AB123 4', ' 2 ', 'C3', 'D4AB'],
    'other_column': [1, 2, 3, 4]
})
sgp = SplitGroupType(variables=['foo'])
print(sgp.transform(sgp_input))
stdout
   other_column   foo_letters   foo_numbers
0             1            AB          1234
1             2                           2
2             3             C             3
3             4           DAB             4

Muiden tehtÀvien parantelu

TÀmÀ tehtÀvÀ on aiempia todennÀköisesti helpompi, koska datasetti on sinulle jo entuudestaan tuttu, ja Linear Regression on ÀÀrimmÀisen yksinkertainen algoritmi. KÀytÀ tÀssÀ voitettua aikaa aiempien skriptien ja oppimispÀivÀkirjojen parantamiseen. Kenties huomaat oppineesi jotakin uutta Data-osioon liittyvistÀ videoista, jotka antavat sinulle uusia ideoita datan kÀsittelyyn tai mallin suorituskyvyn arviointiin?

Kenties huomaat myös, ettÀ parin viikon tauon jÀlkeen luettuvuna sinun oma koodisi vaikuttaa vaikealta. Kenties voit kokeilla parantaa myös sitÀ Pipelinen avulla?

TehtÀvÀ: Kyberviha

Kouluta Logistic Regression -malli, joka ennustaa, onko viesti kybervihaa vai ei. KÀytÀmme tÀtÀ datasettia: Digital skills among youth: A dataset from a three-wave longitudinal survey in six European countries

Sarakkeita on 862, joten olen opettajan roolissa pureskellut hieman dataa valmiiksi. Jupyter Notebook, jolla data on kÀsitelty, sekÀ kÀsitelty data, löytyvÀt kumpikin gh:sourander/ml-perusteet-code-repositoriosta. Polut ovat:

  • Notebook: src/playground/yskills_dataprep.ipynb
  • Data: data/y_skills/ySKILLS_longitudinal_dataset_teacher_processed.csv

Tavoitteena on ennustaa RISK101-kentÀn arvo muiden piirteiden avulla. RISK101 on binÀÀrinen muuttuja, joka kertoo, onko henkilöllÀ riski kohdata kybervihaa (engl. cyberhate). On ÀÀrimmÀisen suositeltavaa ladata alkuperÀinen datasetti ja sen kylkiÀisenÀ toimitettava ySKILLS_data_dictionary.xlsx-tiedosto, joka kertoo, mitÀ kentÀt tarkoittavat. On myös ÀÀrimmÀisen suositeltavaa lukea yllÀ mainittu Jupyter Notebook lÀpi. Tulemme kÀsittelemÀÀn aihetta myös live-luennolla.

Vinkit

Kirjastot

Tutustu ainakin seuraaviin importattuihin luokkiin tai metodeihin:

from sklearn.linear_model import SGDClassifier, LogisticRegression

Muista myös sÀÀtÀÀ mallin hyperparametreja. Esimerkiksi SGDClassifier-luokalla on useita parametreja, jotka vaikuttavat mallin oppimiseen ja suorituskykyyn. Voit kÀyttÀÀ GridSearchCV-luokkaa hyperparametrien arvojen haarukointiin. Kuten aiemminkin, muista dokumentoida oppimispÀivÀkirjassasi, mitÀ olet tehnyt ja miksi. Varmista, ettÀ ymmÀrrÀt oman koodisi.

Tavoite

Pyri vÀhintÀÀn 75 % tarkkuuteen. Alla classification report, joka on saavutettu LogisticRegression luokalla ilman minkÀÀn sortin ÀlykÀstÀ hyperparametrien sÀÀtöÀ tai opettajan esikÀsittelemÀn datasetin hiomista.

              precision    recall  f1-score   support

         0.0       0.68      0.28      0.39       687
         1.0       0.77      0.95      0.85      1796

    accuracy                           0.76      2483
   macro avg       0.73      0.61      0.62      2483
weighted avg       0.75      0.76      0.73      2483

PÀivÀkirjan parantelu

TÀmÀ tehtÀvÀ saattaa osoittautua helpommaksi kuin arvasit. Nyt onkin hyvÀ aika ottaa kurssikirjat ja muut lÀhteet kÀsiin, ja varmistella, ettÀ oppimipÀivÀkirjasi faktat ovat tikissÀ. Jos törmÀÀt vÀitteisiin, joista olet epÀvarma, kyseenalaista oma tekstisi. Etsi lÀhteistÀ, onko tosiaankin asia kuten olet kirjoittanut. Muista lÀhteviitteet!