Я должен сказать, что одной из областей машинного обучения, которой я уделяю недостаточно времени, является перекрестная проверка. Перекрестная проверка — это важный инструмент машинного обучения, который позволяет нам лучше использовать наши данные. Перекрестная проверка разбивает набор данных на столько сгибов, сколько пользователь хотел бы, пытаясь более точно предсказать тестовые данные.

Изучая перекрестную проверку, я наткнулся на функцию cross_val_predict от sklearn, о которой никогда раньше не слышал. Я хотел посмотреть, как cross_val_predict сравнивается с функцией прогнозирования, поэтому решил провести сравнительный эксперимент, чтобы увидеть, какая функция работает лучше всего. Поскольку я все еще изучаю курс Coursera Data Analysis with Python, я решил использовать набор данных, который является темой этого курса, набор данных об автомобилях. Ссылку на автомобильный набор данных можно найти в репозитории Kaggle по адресу: https://www.kaggle.com/toramky/automobile-dataset/code?datasetId=1291&sortBy=dateRun&tab=profile.

Я протестировал несколько моделей линейной регрессии на автомобильном наборе данных, поэтому решил, что самое время проверить его перекрестную проверку. Поскольку cross_val_predict — это функция, которую я только что обнаружил, я подумал, что было бы неплохо протестировать ее на оценщике множественной линейной регрессии и сравнить ее с прогнозом, чтобы увидеть, какая функция может достичь наивысшей точности.

Мой последний пост о множественной линейной регрессии можно найти здесь: https://medium.com/mlearning-ai/is-simple-linear-regression-more-accurate-than-multiple-linear-regression-deda310b876b

Ниже приведен код множественной линейной регрессии.

Переменная y — это столбец price в автомобильном наборе данных, который я ранее сохранил в переменной target.

Независимая переменная Z состоит из четырех столбцов автомобильного набора данных: мощность, снаряженная масса, объем двигателя и расход топлива на галлон.

Я обучил и вписал данные в модель, и когда я сделал прогноз, я добился точности 81,12%:

Затем я построил диаграмму, чтобы разместить прогнозы на той же плоскости, что и фактические значения. Можно видеть, что прогнозы слабо совпадают с фактическими значениями даже с несколькими выбросами:

Затем я изменил код, включив в него функцию cross_val_predict. Я решил определить переменную cv, которая отражает количество сгибов, которые будут сделаны в переменной Z.

Я сделал прогнозы, используя cross_val_predict, а затем вставил данные в модель. Затем я сделал новые прогнозы, используя функцию прогнозирования.

Затем я определил переменную scores, содержащую баллы, которые я получил из cross_val_score sklearn. Медиана баллов составляет 30% со стандартным отклонением 54%.

Я распечатал оценку общего прогноза и добился точности 81,12%, что соответствует тому, чего я добился без перекрестной проверки!

Я построил график прогнозов, и он выглядел идентично графику, построенному без перекрестной проверки:

Я читал, что перекрестная проверка используется для обеспечения отсутствия переобучения. Переобучение можно проверить, если общая оценка точности сильно отличается от перекрестно проверенных оценок. Поскольку перекрестная проверка — это одна из областей, в которой я слаб, я вижу, что мне потребуется гораздо больше практики в этой области машинного обучения.

Код для этого поста можно полностью найти в моей личной учетной записи Kaggle, ссылка находится здесь: https://www.kaggle.com/tracyporter/coursera-data-analysis-with-python?scriptVersionId=74009072.