Кросс-валидация с перемешиванием
Как вы помните, кросс-валидация — это процесс многократного разбиения данных на обучающую и тестовую выборки. При каждом разбиении выбираются разные обучающая и тестовая выборки. В этом упражнении вы выполните стандартную кросс-валидацию ShuffleSplit на данных о стоимости компаний из предыдущего раздела. Позже мы рассмотрим, какие изменения необходимо внести при работе с временными рядами. Мы будем использовать те же исторические данные о ценах нескольких крупных компаний.
В вашем рабочем пространстве доступен экземпляр объекта линейной регрессии (model), а также функция r2_score() для оценки модели. Данные хранятся в массивах X и y. Кроме того, мы подготовили вспомогательную функцию (visualize_predictions()), которая поможет визуализировать результаты.
Это упражнение является частью курса
Машинное обучение для данных временных рядов на Python
Инструкции к упражнению
- Инициализируйте объект кросс-валидации ShuffleSplit с 10 разбиениями.
- Переберите разбиения CV с помощью этого объекта. На каждой итерации:
- Обучите модель на индексах обучающей выборки.
- Сгенерируйте предсказания на индексах тестовой выборки, оцените модель (\(R^2\)) на основе этих предсказаний и сохраните результаты.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import ShuffleSplit and create the cross-validation object
from sklearn.model_selection import ShuffleSplit
cv = ____(____, random_state=1)
# Iterate through CV splits
results = []
for tr, tt in cv.____(X, y):
# Fit the model on training data
____(X[tr], y[tr])
# Generate predictions on the test data, score the predictions, and collect
prediction = ____(X[tt])
score = r2_score(____, ____)
results.append((prediction, score, tt))
# Custom function to quickly visualize predictions
visualize_predictions(results)