Partitionnement
Pour bien évaluer un modèle, on peut diviser les données en un ensemble d'entraînement et un ensemble de test. L'ensemble d'entraînement contient les données sur lesquelles le modèle est construit, et l'ensemble de test sert à évaluer le modèle. Cette division se fait aléatoirement, mais lorsque l'incidence de la cible est faible, il peut être nécessaire de stratifier, c'est‑à‑dire de s'assurer que les ensembles d'entraînement et de test contiennent un pourcentage égal 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 une incidence de la cible égale. La fonction train_test_split a déjà été importée, et les DataFrames X et y sont disponibles dans votre espace de travail.
Cette activité fait partie du cours
Introduction à l'analytique prédictive en Python
Instructions de l’exercice
- Stratifiez ces DataFrames en utilisant la fonction
train_test_split. Assurez‑vous que les ensembles d'entraînement et de test sont de même taille et ont une incidence de la cible égale. - Calculez l'incidence de la cible dans l'ensemble d'entraînement. Il s'agit du nombre de cibles dans l'ensemble d'entraînement divisé par le nombre d'observations dans cet ensemble.
- Calculez l'incidence de la cible dans l'ensemble de test.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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))