đ 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))
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:
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!