Розбиття даних
Щоб коректно оцінити модель, дані розбивають на тренувальну та тестову вибірки. Тренувальна вибірка містить дані, на яких будується модель, а тестова — використовується для її оцінювання. Це розбиття відбувається випадково, але коли частка цільового класу є низькою, може бути потрібна стратифікація — тобто забезпечення однакової частки цільових значень у тренувальній і тестовій вибірках.
У цій вправі ви розіб'єте дані зі стратифікацією та перевірите, що тренувальна і тестова вибірки мають однакову частку цільових значень. Метод train_test_split уже імпортовано, а датафрейми X і y доступні у вашому робочому середовищі.
Ця вправа є частиною курсу
Вступ до прогностичної аналітики в Python
Інструкції до вправи
- Виконайте стратифіковане розбиття цих датафреймів за допомогою методу
train_test_split. Переконайтеся, що тренувальна й тестова вибірки однакового розміру та з однаковою часткою цільового класу. - Обчисліть частку цільового класу в тренувальній вибірці. Це кількість цільових значень у тренувальній вибірці, поділена на кількість спостережень у тренувальній вибірці.
- Обчисліть частку цільового класу в тестовій вибірці.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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))