Cum începem?
În următoarele capitole veți învăța despre cum funcționează cele mai comune modele de Machine Learning. Asta nu înseamnă că tu va trebui să le implementezi vreodată! Ele sunt deja implementate în librăriile cunoscute, iar tu va trebui doar să le apelezi pe setul tău de date. Orice modificare relevantă ai putea face pe aceste modele este, de cele mai multe ori, un parametru pe care îl poți seta.
Asta nu înseamnă că nu ar trebui să le implementezi niciodată. Noi recomandăm să încercați să scrieți de la 0 toate modelele măcar o dată ca să vă asigurați că ați înțeles cum funcționează.
De ce m-ar interesa cum funcționează un model? Ca să știi ce să folosești la fiecare problemă. În funcție de informațiile pe care le știm despre un set de date ne așteptăm ca anumite modele să funcționeze mai bine decât altele.
În colab-ul asociat acestei secțiuni vei găsi un template de cod pe care îl vei putea folosi fix așa în cele mai multe situații. Hai să trecem puțin prin el:
import pandas as pd
De cele mai multe ori în ML vom primi setul de date sub formă de tabel. Pandas este un exemplu de librărie care poate să citească, modifice și creeze ușor fișiere care respectă acest format (.csv, .xls etc.)
df_train = pd.read_csv('train.csv')
df_test = pd.read_csv('test.csv')
Datele de antrenare (train) și test vor fi date în enunțul problemei. Motivul pentru care antrenăm modelele pe anumite date e ca să le putem utiliza ulterior în aplicații în viața reală. Asta înseamnă că în momentul în care am decis că suntem mulțumiți cu performanța lui pe date pentru care știm răspunsul corect (train) îl putem folosi pentru a afla răspunsul la întrebări noi (test). Datele de test nu vor avea niciodată coloana de labels publică întrucât încearcă să simuleze viața reală. Aceea este folosită doar de evaluatorul problemei pentru a-ți cuantifica performanța.
from sklearn.model_selection import train_test_split
label = 'Numele coloanei cu răspunsuri'
train, validation = train_test_split(df_train, test_size=0.2, random_state=0)
y_train = train[label]
X_train = train.drop(columns=[label])
y_validation = validation[label]
X_validation = validation.drop(columns=[label])
Întrucât noi nu știm labelurile datelor de test vom avea nevoie să ne simulăm aceleași condiții local pentru a ajunge la cel mai bun răspuns. Urmează să testăm diverse procesări de date și modele, dar ca să ne dăm seama care e cel mai bun va trebui să simulăm și noi, local, aceleași condiții din viața reală pe care le simulează evaluatorul. Din fericire, de cele mai multe ori este suficient să ne împărțim datele în 2 (train și validation), să antrenăm pe noul train și să comparăm rezultatele obținute de modelul nostru pe datele de validare cu rezultatele reale pe aceste date.
# CORECTARE / CURATARE DATE
Nu vom scrie cuvintele de mai sus în cod, dar va trebui să ne asigurăm că toate datele noastre sunt numerice, nu există elemente de tip None etc.
from sklearn.metrics import accuracy_score
model = ClasaDeModele()
model = model.fit(X_train, y_train)
y_pred = model.predict(X_validation)
print(accuracy_score(y_pred, y_validation))
Cam așa o să arate antrenarea pe care o faci, indiferent de model. Înlocuim ClasaDeModele
cu clasa care conține modelul pe care vrem să îl folosim, antrenăm acest model pe datele de train, prezicem răspunsurile sale pe datele de validare și analizăm cât de bine s-a descurcat.
Metrica folosită în exemplu (acuratețea) numără câte răspunsuri corecte a dat modelul împărțit la numărul total de întrebări -- deci rezultatul va fi un număr între 0 și 1, unde 1 înseamnă că s-a descurcat perfect.
df_test[label] = model.predict(df_test)
df_test.rename(columns={'Unnamed: 0': 'ID'})
df_test[['ID', label]].to_csv('prediction.csv', index=False)
După ce am terminat antrenare îmi pot salva predicțiile pe datele de test într-un csv. Unele platforme necesită ca outputul să aibă fix 2 coloane - ID și predicție - așa că am denumit corect coloana ID (în cazul în care nu era deja denumită astfel) și am adăugat coloana cu predicțiile. Acum poți trimite codul să vezi cum te-ai descurcat!