Opsplitsen
Om een model goed te kunnen evalueren, kun je de data opsplitsen in een train- en een testset. De trainset bevat de data waarop het model wordt gebouwd, en de testset gebruik je om het model te evalueren. Deze verdeling gebeurt willekeurig, maar als de target-incidentie laag is, kan het nodig zijn om te stratificeren: zorgen dat train- en testset hetzelfde percentage targets bevatten.
In deze oefening ga je de data stratificeren bij het opsplitsen en controleren dat train- en testset dezelfde target-incidentie hebben. De methode train_test_split is al geïmporteerd en de DataFrames X en y staan klaar in je werkruimte.
Deze oefening maakt deel uit van de cursus
Introductie tot Predictive Analytics in Python
Oefeninstructies
- Stratificeer deze DataFrames met de methode
train_test_split. Zorg ervoor dat train- en testset even groot zijn en dezelfde target-incidentie hebben. - Bereken de target-incidentie van de trainset. Dit is het aantal targets in de trainset gedeeld door het aantal observaties in de trainset.
- Bereken de target-incidentie van de testset.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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))