Разбиение данных
Для корректной оценки модели данные разбивают на обучающую и тестовую выборки. Обучающая выборка используется для построения модели, а тестовая — для её оценки. Разбиение выполняется случайным образом, однако при низкой доле целевых событий может потребоваться стратификация: она гарантирует, что обе выборки содержат одинаковый процент целевых значений.
В этом упражнении вы выполните разбиение данных со стратификацией и убедитесь, что доля целевых событий в обучающей и тестовой выборках одинакова. Метод train_test_split уже импортирован, а DataFrames X и y доступны в вашем рабочем пространстве.
Это упражнение является частью курса
Введение в предиктивную аналитику на Python
Инструкции к упражнению
- Разбейте DataFrames на выборки с помощью метода
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))