Particionado
Para evaluar correctamente un modelo, se pueden dividir los datos en un conjunto de entrenamiento (train) y otro de prueba (test). El conjunto de train contiene los datos con los que se construye el modelo, y el conjunto de test se usa para evaluarlo. Esta división se hace aleatoriamente, pero cuando la incidencia del target es baja, puede ser necesario estratificar, es decir, garantizar que los conjuntos de train y test contengan el mismo porcentaje de targets.
En este ejercicio vas a dividir los datos con estratificación y comprobar que los conjuntos de train y test tienen la misma incidencia del target. El método train_test_split ya se ha importado y los DataFrames X y y están disponibles en tu espacio de trabajo.
Este ejercicio forma parte del curso
Introducción al análisis predictivo en Python
Instrucciones del ejercicio
- Estratifica estos DataFrames usando el método
train_test_split. Asegúrate de que los conjuntos de train y test tengan el mismo tamaño y la misma incidencia del target. - Calcula la incidencia del target en el conjunto de train. Es el número de targets en el conjunto de train dividido entre el número de observaciones de ese conjunto.
- Calcula la incidencia del target en el conjunto de test.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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))