ПочатиПочніть безкоштовно

Розбиття даних

Щоб коректно оцінити модель, дані розбивають на тренувальну та тестову вибірки. Тренувальна вибірка містить дані, на яких будується модель, а тестова — використовується для її оцінювання. Це розбиття відбувається випадково, але коли частка цільового класу є низькою, може бути потрібна стратифікація — тобто забезпечення однакової частки цільових значень у тренувальній і тестовій вибірках.

У цій вправі ви розіб'єте дані зі стратифікацією та перевірите, що тренувальна і тестова вибірки мають однакову частку цільових значень. Метод 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))
Редагувати та запускати код