Я несколько раз писал о конкурсе Kaggle’s House Price, но решил, что было бы неплохо написать о том, как принять участие в этом конкурсе, и снять видео о нем от начала до конца. Причина этого в том, что я был очень напуган, когда начал изучать науку о данных и решил открыть свою собственную учетную запись Kaggle. Я прошел несколько бесплатных онлайн-курсов по Linux, науке о данных и Python. Я также смотрел на YouTube видеоролики о Python, науке о данных, машинном обучении и анализе временных рядов.

Хорошая идея начинать любое занятие с периодом обучения и размышлений о том, что было изучено, но в какой-то момент студенту потребуется применить то, что он узнал, на практике, и именно здесь начинается соревновательное программирование. Есть несколько сайтов, предлагающих соревнования по программированию, но Kaggle — один из самых известных, и это первый сайт, на который я наткнулся, предлагающий соревнования.

Конкурс «Цена дома» Kaggle был, пожалуй, вторым конкурсом, в котором я участвовал, и я искал решение, просматривая видео, пытаясь дать мне представление о том, как решить вопрос конкуренции. Именно во время этого поиска решения, когда я просматривал чужой код, я понял, что у людей есть какие-то необычные способы решения сложных проблем. Решение, которое я собираюсь представить сегодня, уникально, но следует простой методологии, которую можно использовать и для решения других вопросов, связанных с конкуренцией.

Постановка задачи конкурса Kaggle’s House Price выглядит следующим образом:

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

С 79 независимыми переменными, описывающими (почти) каждый аспект жилых домов в Эймсе, штат Айова, этот конкурс ставит перед вами задачу предсказать окончательную цену каждого дома.

Набор данных Ames Housing был составлен Дином Де Коком для использования в обучении науке о данных. Это невероятная альтернатива для специалистов по данным, которые ищут модернизированную и расширенную версию часто цитируемого набора данных Boston Housing».

Я написал программу в бесплатном блокноте Kaggle Jupyter Notebook, на котором уже установлено множество библиотек. Поэтому мне нужно было импортировать только те файлы, которые, по моему мнению, мне понадобятся для выполнения команд: -

Затем я прочитал в файлах, которые были сохранены в подкаталоге Kaggle для конкурса «Цена дома»:

Я проверил нулевые значения как в наборах данных df_train, так и в наборах данных df_test и обнаружил, что многие столбцы необходимо ввести:

Я решил отфильтровать столбцы объектов как из df_train, так и из df_test:

Затем я обозначил любые столбцы объектов как в df_train, так и в df_test словами «не внесен в список»:

Поскольку модель будет принимать только числовые столбцы, я закодировал столбцы объектов как df_train, так и df_test, чтобы сделать их числовыми:

Затем я отфильтровал столбцы целых чисел в наборах данных df_train и df_test:

Я вставляю нулевые значения в числовые столбцы как df_train, так и df_test с 0:-

Я отфильтровал столбцы с плавающей запятой как в df_train, так и в df_test: -

Затем я вменил нулевые значения столбцов с плавающей запятой как в df_train, так и в df_test с 0:-

После того, как категориальные столбцы были закодированы и нулевые значения во всех трех типах столбцов были точно импутированы, я создал наборы данных train и test с тремя типами кадров данных, которые я создал из наборов данных df_train и df_test, используя слияние ( ) функция:-

Затем я определил переменные X, y и X_test.

Я создал переменную «id» из test.Id, которая позже будет использоваться в программе.

Метка «y» была создана с помощью train.SalePrice.values.

Переменная «X» была создана из набора данных поезда с удаленными столбцами «id», «index» и «SalePrice».

Переменная «X_test» была создана из тестового набора данных с удаленными столбцами «id» и «index»:

После того, как X, y и X_test были созданы, я разделил наборы данных X и y на наборы для обучения и проверки, используя функцию sklearn train_test_split():

Затем я масштабировал наборы данных для обучения и проверки, используя функцию sklearn StandardScaler():

Я определил модель и в этом случае использовал AdaBoostRegressor и DecisionTreeRegressor в качестве базовой оценки. Я достиг точности 99,99%, используя эту методологию:

Я сделал прогноз на проверочном наборе и добился точности 91,61% и среднеквадратичной ошибки, или RMSE, 25126: -

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

Я подготовил прогнозы, создав фрейм данных с ранее созданным идентификатором и прогнозами.

Затем я преобразовал кадр данных в файл csv, который будет отправлен в Kaggle:

Затем я прочитал CSV-файл, чтобы убедиться, что он соответствует стандартам Kaggle, прежде чем сохранить программу и отправить ее в Kaggle:

Когда я отправил прогнозы в Kaggle, я набрал 0,24514 балла. Оценка была не лучшей для меня, но вполне подходила для демонстрации того, как участвовать в соревнованиях Kaggle от начала до конца. При необходимости я могу использовать другую модель, чтобы попытаться улучшить оценку:

Я сделал видео на YouTube, где я участвовал в этом конкурсе от начала до конца, которое можно найти здесь: - Решение конкурса цен на жилье Kaggle от начала до конца — YouTube

Код для этого поста можно полностью найти в моей личной учетной записи Kaggle, которую можно найти здесь: Цены на жилье — AdaBoostRegressor | Kaggle