Изучая машинное обучение, я столкнулся с концепцией выбросов, о которой я рассказал в своем последнем посте, который можно найти здесь: - https://medium.com/mlearning-ai/how-to-find-and -remove-outliers-from-a-regression-in-python-449bc9e13101

Я был настолько заинтригован концепцией выбросов, что решил попробовать функции sklearns в отношении этого на наборах данных, над которыми я ранее работал. Изучая выбросы, я обнаружил, что цены на жилье - это одна из областей, где обнаруживаются и удаляются выбросы, чтобы повысить точность прогнозов. Я хотел использовать функции в конкурсе Kaggle Ames House Price, но поскольку набор данных содержит категориальные значения, это было бы невозможно, если бы я не запустил программу без категориальных значений. Поэтому я решил попрактиковаться с набором данных, над которым я уже работал, а именно с набором данных California House Price.

Набор данных California House Price легко найти, потому что он установлен в Google Colab, чтобы дать ученым-аналитикам возможность отточить свои навыки. Я попробовал все четыре функции выброса sklearn в наборе данных California House Price, но только одна дала мне какое-либо существенное улучшение по сравнению с прогнозами, а именно повышение точности на 1%. Я использовал функцию LocalOutlierFactor, которую я использовал в предыдущем посте.

У меня уже была программа для цен на жилье в Калифорнии, которую я написал в Google Colab, сохраненная на моем диске Google, поэтому единственное, что мне нужно было сделать, это изменить ее. Тем не менее, я остановлюсь на важных моментах программы на тот случай, если кто-то из моих читателей не читал о первой версии программы.

После создания программы я импортировал нужные мне библиотеки. Обычно я импортирую библиотеки только по мере необходимости, но изначально я импортировал pandas, numpy, sklearn, matplotlib и seaborn. Pandas используется для создания фреймов данных и управления ими, numpy используется для вычисления алгебраических задач, sklearn содержит функции машинного обучения, а matplotlib и seaborn используются для построения точек данных на графике.

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

Наборы данных для обучения и тестирования имели целевой столбец, поэтому я добавил тестовый фрейм данных к фреймворку данных для поезда, чтобы создать один фрейм данных, train: -

Я построил график точек данных в наборе данных, который показан ниже: -

Затем я определил значения X и y, которые являются независимыми и зависимыми соответственно. Переменная X состоит из кадра данных поезда с удаленным целевым столбцом, а переменная y состоит из целевого столбца.

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

После предварительной обработки данных я разделил набор данных X и y на наборы для обучения и проверки с помощью функции sklearn train_test_split: -

Именно в это время я вставил код для поиска выбросов с помощью функции LocalOutlierFactor в sklearn: -

Затем я изменил набор данных X_train и y_train, исключив строки данных, содержащие выбросы: -

После того, как выбросы были удалены из данных, которые должны были быть обучены и подогнаны, я определил модель. В этом случае я решил использовать HistGradient BoostingRegressor из sklearn, который разработан для больших фреймов данных. Я обучил и подогнал данные и добился точности 99,43%: -

Затем я сделал прогноз на проверочном наборе и достиг точности 86,07%, что примерно на 1% больше прогноза, которого я бы достиг без идентификации и удаления выбросов:

Я сравнил фактические значения с предсказанными, и разницу можно увидеть на скриншоте ниже: -

Таким образом, рекомендуется использовать методы для выявления и удаления выбросов в наборах данных. Хотя в этом случае я добился увеличения точности всего на 1%, этот 1% может иметь большое значение при участии в соревнованиях по науке о данных.

Полный код этой программы можно найти в моей личной учетной записи GitHib, ссылка находится здесь: - https://github.com/TracyRenee61/House-Prices/blob/master/California_House_Prices_Outliers.ipynb