Partiționare
Pentru a evalua corect un model, poți împărți datele într-un set de antrenament și un set de testare. Setul de antrenament conține datele pe baza cărora se construiește modelul, iar setul de testare este folosit pentru a-l evalua. Această împărțire se face aleatoriu, însă atunci când incidența variabilei țintă este redusă, poate fi necesar să aplici stratificarea – adică să te asiguri că setul de antrenament și cel de testare conțin un procent egal de ținte.
În acest exercițiu vei partiția datele cu stratificare și vei verifica că cele două seturi au aceeași incidență a variabilei țintă. Metoda train_test_split a fost deja importată, iar DataFrame-urile X și y sunt disponibile în spațiul tău de lucru.
Acest exercițiu face parte din cursul
Introducere în analitica predictivă în Python
Instrucțiuni pentru exercițiu
- Stratifică aceste DataFrame-uri folosind metoda
train_test_split. Asigură-te că setul de antrenament și cel de testare au aceeași dimensiune și aceeași incidență a variabilei țintă. - Calculează incidența variabilei țintă pentru setul de antrenament. Aceasta reprezintă numărul de ținte din setul de antrenament împărțit la numărul total de observații din setul de antrenament.
- Calculează incidența variabilei țintă pentru setul de testare.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Load the partitioning module
from sklearn.model_selection import train_test_split
# Create DataFrames with variables and target
X = basetable.drop("target", 1)
y = basetable["target"]
# Carry out 50-50 partititioning with stratification
X_train, X_test, y_train, y_test = ____(X, y, test_size = ____, stratify = ____)
# Create the final train and test basetables
train = pd.concat([X_train, y_train], axis=1)
test = pd.concat([X_test, y_test], axis=1)
# Check whether train and test have same percentage targets
print(round(sum(train[____])/len(____), 2))
print(round(sum(test[____])/len(____), 2))