Partitionnement
Pour évaluer correctement un modèle, on peut partitionner les données en un ensemble d’entraînement (train) et un ensemble de test. Le train contient les données sur lesquelles le modèle est construit, et le test sert à évaluer ses performances. Cette division est aléatoire, mais lorsque l’incidence de la cible est faible, il peut être nécessaire de stratifier, c’est-à-dire s’assurer que les ensembles d’entraînement et de test contiennent un pourcentage identique de cibles.
Dans cet exercice, vous allez partitionner les données avec stratification et vérifier que les ensembles d’entraînement et de test ont la même incidence de la cible. La méthode train_test_split a déjà été importée, et les DataFrames X et y sont disponibles dans votre espace de travail.
Cet exercice fait partie du cours
Introduction à l’analytique prédictive en Python
Instructions
- Stratifiez ces DataFrames à l’aide de la méthode
train_test_split. Assurez-vous que les ensembles d’entraînement et de test ont la même taille et la même incidence de la cible. - Calculez l’incidence de la cible dans l’ensemble d’entraînement. Il s’agit du nombre de cibles dans le train divisé par le nombre d’observations dans le train.
- Calculez l’incidence de la cible dans l’ensemble de test.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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))