Предсказание стоимости квартиры машинное обучение

Содержание
  1. Создайте модель для прогнозирования цен на жилье с помощью Python
  2. Как начать свое собственное путешествие по науке о данных!
  3. Привет всем ,
  4. medium.com
  5. Shreyas3108 (Шреас Рагхаван)
  6. Shreyas3108 имеет 9 доступных репозиториев. Следуйте их коду на GitHub.
  7. github.com
  8. Какой самый распространенный дом (в спальне)?
  9. Визуализация расположения домов по широте и долготе.
  10. Как общие факторы влияют на цену дома?
  11. Линейная регрессия :-
  12. Нежное введение в алгоритм повышения градиента для машинного обучения — машинное обучение…
  13. Повышение градиента является одним из самых мощных методов построения прогностических моделей. В этом посте вы узнаете .
  14. machinelearningmastery.com
  15. 3.2.4.3.6. sklearn.ensemble.GradientBoostingRegressor — документация scikit-learn 0.18.1
  16. класс sklearn.ensemble. GradientBoostingRegressor (потеря = ‘ls’, learning_rate = 0,1, n_estimators = 100, подвыборка = 1,0…
  17. scikit-learn.org
  18. Прогнозирование цен на жилье с помощью линейной регрессии | Машинное обучение с нуля (часть II)
  19. Машинное обучение из серии Scratch:
  20. Линейная регрессия
  21. colab.research.google.com
  22. Данные
  23. Загрузите данные
  24. Исследование — почувствовать наши данные
  25. У нас есть недостающие данные?
  26. Прогнозирование цены продажи
  27. Использование линейной регрессии
  28. Простая линейная регрессия
  29. Многовариантная регрессия
  30. Функция потери
  31. Среднеквадратичная ошибка (MSE) Функция стоимости
  32. Одна средняя квадратическая ошибка (OHMSE)
  33. Предварительная обработка данных
  34. Реализация линейной регрессии
  35. Предсказание цены продажи с нашей первой моделью
  36. Многовариантная линейная регрессия
  37. ВнедрениеМноговариантная линейная регрессия
  38. Использование многопараметрической линейной регрессии
  39. Линейная регрессия
  40. colab.research.google.com
  41. Вывод
  42. Машинное обучение из серии Scratch:

Создайте модель для прогнозирования цен на жилье с помощью Python

Дата публикации Jun 17, 2017

В прошлый раз мы увидели, как выполнить логистическую регрессию для титанового набора данных, что, по мнению многих профессиональных исследователей данных, является первым шагом к выполнению проекта по науке о данных. Если вы не нашли его здесь,

Как начать свое собственное путешествие по науке о данных!

Привет всем ,

medium.com

Итак, я предполагаю, что вы знакомы с базовыми библиотеками Python (если нет, то просмотрите вышеприведенный учебник). мы собираемся использовать те же библиотеки, которые мы использовали в прошлый раз, с добавлением seaborn, еще одной встроенной библиотеки python, используемой для представления данных.

В прошлый раз мы сделали для набора данных, который имел данные о пассажирах «Титаника», мы знали, что случилось с «Титаником», и нам не нужно было пролистывать набор данных. Но в большинстве случаев ученым-данным дают данные, которые им неизвестны. Это очень важно знать подробно о данных.

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

Что такое хорошая точность? Ну, это зависит от того, с какими данными мы работаем, для данных по кредитному риску точность 80% может быть недостаточно хорошей, но для данных, использующих НЛП, это было бы хорошо. Таким образом, мы не можем определить «хорошую точность», но все, что выше 85%, является хорошим. Наша цель в этом наборе данных — достичь показателя точности 85% +

Давайте начнем, Данные и код можно найти по моей ссылке на GitHub

Shreyas3108 (Шреас Рагхаван)

Shreyas3108 имеет 9 доступных репозиториев. Следуйте их коду на GitHub.

github.com

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

Что мы можем вывести из описанной выше функции?

  1. Посмотрите на столбцы спален, в наборе данных есть дом, где в доме 33 спальни, он выглядит как массивный дом, и было бы интересно узнать о нем больше по мере нашего продвижения.
  2. Максимальный квадратный фут составляет 13 450, а минимальный — 290. Мы видим, что данные распределены.

Точно так же мы можем вывести очень много вещей, просто взглянув на функцию описать.

Теперь мы увидим некоторую визуализацию, а также увидим, как и что мы можем сделать из визуализации.

Какой самый распространенный дом (в спальне)?

Давайте посмотрим, какой номер спальни наиболее распространен. Вы можете спросить, почему это важно? Давайте посмотрим на эту проблему с точки зрения застройщика, иногда для застройщика важно понять, какой тип дома является самым продаваемым, что позволяет застройщику строить дом на его основе. Здесь, в Индии, для хорошей местности строитель предпочитает строить дома, которые состоят из более чем 3 спален, что привлекает представителей высшего среднего и высшего классов общества.

Давайте посмотрим, как это получится для этих данных?

Как видно из визуализации, чаще всего продаются дома с 3 спальнями, за которыми следуют 4 спальни. Так как это полезно? Для застройщика, имеющего эти данные, он может построить новое здание с 3 и 4 спальнями, чтобы привлечь больше покупателей.

Итак, теперь мы знаем, что 3 и 4 спальни — самые продаваемые. Но в каком месте?

Визуализация расположения домов по широте и долготе.

Таким образом, согласно набору данных у нас есть широта и долгота в наборе данных для каждого дома. Мы собираемся увидеть общее местоположение и как дома расположены.

Читайте также:  Предсказания ванги все года с 2000 года

Мы используем seaborn, и мы получаем его прекрасную визуализацию. Функция Joinplot помогает нам увидеть концентрацию данных и размещение данных и может быть действительно полезной. Давайте посмотрим, что мы можем сделать из этой визуализации. Для широты между -47,7 и -48,8 есть много домов, что может означать, что, возможно, это идеальное место, не так ли? Но когда мы говорим о долготе, мы видим, что концентрация высока от -122,2 до -122,4. Что будет означать, что большинство покупок было для этого конкретного места

Как общие факторы влияют на цену дома?

Мы видели общие места, и теперь мы увидим несколько общих факторов, влияющих на цены дома, и если да, то? тогда на сколько?

Начнем с того, влияет ли цена на жилую площадь дома или нет?

График, который мы использовали выше, называется графиком рассеяния, график рассеяния помогает нам увидеть, как наши точки данных разбросаны и обычно используются для двух переменных. Из первого рисунка мы можем видеть, что чем больше жилая площадь, тем больше цена, хотя данные сконцентрированы в определенной ценовой зоне, но из рисунка мы можем видеть, что точки данных кажутся в линейном направлении. Благодаря точечной диаграмме мы также можем видеть некоторые неровности того, что дом с наивысшими квадратными футами был продан по очень низкой цене, возможно, есть другой фактор или, возможно, данные неверны. Вторая цифра говорит нам о расположении домов по долготе, и это дает нам довольно интересное наблюдение, что от -122,2 до -122,4 продает дома в гораздо большем количестве.

Мы можем видеть больше факторов, влияющих на цену

Как видно из всего вышеприведенного представления, на цены дома влияют многие факторы, например, квадратные футы, которые увеличивают цену дома, и даже местоположение, влияющее на цены дома.

Теперь, когда мы знакомы со всеми этими представлениями и можем рассказать нашу собственную историю, давайте перейдем и создадим модель, по которой можно было бы прогнозировать цену дома на основе других факторов, таких как квадратные футы, фронт воды и т. Д. Мы посмотрим, что такое линейная регрессия и как мы это делаем?

Линейная регрессия :-

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

Регрессия работает по уравнению линии, y = mx + c, линия тренда устанавливается через точки данных, чтобы предсказать результат.

Переменная, которую мы предсказываем, называется переменной критерия и называется Y. Переменная, на которой мы основываем наши прогнозы, называется переменной предиктора и называется X. Когда существует только одна переменная предиктора, метод прогнозирования называетсяПростая регрессия. и если присутствует несколько переменных предиктора, то множественная регрессия.

Давайте посмотрим на код,

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

Итак, что же нам делать ? Пойдемте шаг за шагом.

  1. Мы импортируем наши зависимости, для линейной регрессии мы используем sklearn (встроенная в библиотеку python) и импортируем из нее линейную регрессию.
  2. Затем мы инициализируем линейную регрессию переменной reg.
  3. Теперь мы знаем, что цены должны быть предсказаны, поэтому мы устанавливаем метки (выходные данные) в качестве ценовых столбцов, а также конвертируем даты в 1 и 0, чтобы они не сильно влияли на наши данные. Мы используем 0 для новых домов, построенных после 2014 года.
  4. Мы снова импортируем другую зависимость, чтобы разделить наши данные на обучающие и тестируемые.
  5. Я сделал данные о поездах 90% и 10% от данных, которые будут моими данными испытаний, и сделал случайное разделение данных с помощью random_state.
  6. Итак, теперь у нас есть данные о поездах, тестовые данные и метки для обоих, что позволит нам вписать наши данные о поездах и тестовые данные в модель линейной регрессии.
  7. После подгонки наших данных к модели мы можем проверить оценку наших данных, т. Е. Прогноз. в этом случае прогноз73%

Точность модели ниже нашей цели в 85. Так как же нам достичь этой 85% цели?

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

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

Для построения модели прогнозирования многие эксперты используютрегрессия с повышением градиента,так что же такое повышение градиента? Это метод машинного обучения для задач регрессии и классификации, который создает модель прогнозирования в виде множества моделей слабого прогнозирования, обычно деревьев решений.

Теперь, чтобы упростить задачу, вспомните, как мы обозначили машину в качестве студента, обучили данные в качестве учебной программы и тестовые данные в качестве экзамена. давайте попробуем понять метод повышения градиента, используя тот же Итак, давайте проанализируем, почему наш студент (машина) не поднялся выше 85%? может быть много причин, мало таких причин могут быть:

  1. Наш студент забыл несколько тем перед сдачей экзамена. Аналогичным образом, данные, прочитанные машиной, могут быть потеряны.
  2. Это может быть слабый ученик, который не учится чтению, но нуждается в визуализации. Наша машина может быть слабым учеником и может потребовать дерева решений.
  3. Даже после использования новой техники наш ученик может не помнить учебный план, поэтому мы даем ему время на чтение и понимание. Аналогично для машины.
Читайте также:  Все предсказание великой ванги

Следовательно, для всех этих проблем есть одно решение — повышение градиентного спуска.

Нежное введение в алгоритм повышения градиента для машинного обучения — машинное обучение…

Повышение градиента является одним из самых мощных методов построения прогностических моделей. В этом посте вы узнаете .

machinelearningmastery.com

Эта ссылка дает глубокое понимание алгоритма повышения градиента.

Давайте посмотрим, как мы это делаем, и тогда мы сможем углубиться и понять, что происходит.

  1. Сначала мы импортируем библиотеку из sklearn (поверьте, это лучшая библиотека для всех статистических моделей)
  2. Мы создаем переменную, в которой мы определяем наш регрессор повышения градиента и устанавливаем для него параметры, здесь

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

max_depth — глубина узла дерева.

learning_rate — скорость обучения данных.

потеря — функция потери, которая будет оптимизирована. «Ls» относится к регрессии наименьших квадратов

минимальное разделение выборки — номер выборки для изучения данных

3. Затем мы вписываем наши данные обучения в модель повышения градиента и проверяем точность

4. Мы получили точность91,94%что удивительно!

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

Проверьте эту ссылку для получения дополнительной информации о регрессоре повышения градиента

3.2.4.3.6. sklearn.ensemble.GradientBoostingRegressor — документация scikit-learn 0.18.1

класс sklearn.ensemble. GradientBoostingRegressor (потеря = ‘ls’, learning_rate = 0,1, n_estimators = 100, подвыборка = 1,0…

scikit-learn.org

Мы получили то, что хотели! показатель точности 91,94%. Примените эту технику к различным другим наборам данных и опубликуйте результаты. Попробуйте поставить случайные семена и проверьте, меняет ли это точность данных или нет! Дайте мне знать, если это так. Спасибо, что прочитали это!

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

Источник

Прогнозирование цен на жилье с помощью линейной регрессии | Машинное обучение с нуля (часть II)

Дата публикации Apr 1, 2019

TL; DR Использовать тестовый подход кпостроить модель линейной регрессии, используя Python с нуля. Вы будете использовать свою обученную модель, чтобы предсказать цены продажи домов и распространить ее на многовариантную линейную регрессию.

Машинное обучение из серии Scratch:

  1. Смарт-скидки с логистической регрессией
  2. Прогнозирование цен на жилье с помощью линейной регрессии
  3. Построение дерева решений с нуля в Python
  4. Извлечение цветовой палитры с кластеризацией K-средних
  5. Анализ настроения при просмотре фильма с помощью Naive Bayes
  6. Музыкальный художник Recommender System с использованием Stochastic Gradient Descent
  7. Классификация изображений модных товаров с использованием нейронных сетей
  8. Постройте агента по вождению такси в постапокалиптическом мире, используя Reinforcement Learning

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

Давайте начнем строить нашу модель с Python, но на этот раз мы будем использовать ее для более реалистичного набора данных.

Полный блокнот с исходным кодом(Google Colab Laboratory):

Линейная регрессия

colab.research.google.com

Данные

Наши данные получены от конкурса Kaggle под названием «Цены на жилье: передовые методы регрессии». Это содержит1460обучающие данные и 80 функций, которые могут помочь нам предсказать цену продажи дома.

Загрузите данные

Давайте загрузим набор данных Kaggle во фрейм данных Pandas:

Исследование — почувствовать наши данные

Мы собираемся предсказать SalePrice столбец ($ USD), давайте начнем с него:

Большая часть плотности лежит между 100k и 250k, но, похоже, есть много выбросов на стороне более дорогих.

Далее, давайте посмотрим на большую жилую площадь (квадратные футы) по сравнению с продажной ценой:

Вы могли ожидать, что большая жилая площадь будет означать более высокую цену. Этот график показывает, что вы в целом правы. Но что это за 2–3 «дешевых» дома с огромной жилой площадью?

Один столбец, о котором вы, возможно, не задумываетесь, это «TotalBsmtSF» — общая площадь подвала, но давайте все равно сделаем это:

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

Хорошо, последний. Давайте посмотрим на «TotalQual» — общий материал и качество отделки. Конечно, эта функция кажется гораздо более субъективной, поэтому она может дать несколько иной взгляд на цену продажи.

Кажется, все хорошо для этого, за исключением того, что, если вы посмотрите на правильные вещи, начните становиться намного более нюансированными Это «запутает» нашу модель?

Давайте иметь более общий взгляд натоп 8соотнесенные характеристики с ценой продажи:

Удивлены? Все функции, которые мы обсуждали до сих пор, присутствуют. Почти как мы знали их с самого начала .

Читайте также:  Методы предсказания поведения системы

У нас есть недостающие данные?

Мы до сих пор не обсуждали способы «обработки» недостающих данных, поэтому мы будем обращаться с ними как с боссом — просто не будем использовать эти функции:

Да, мы не собираемся использовать ни один из них.

Прогнозирование цены продажи

Теперь, когда у нас есть представление о данных, с которыми мы играем, мы можем начать наш план атаки — как предсказать цену продажи для данного дома?

Использование линейной регрессии

Модели линейной регрессии предполагают, что связь между зависимой непрерывной переменной Y и одной или несколькими объясняющими (независимыми) переменными X является линейной (то есть прямой линией). Он используется для прогнозирования значений в непрерывном диапазоне (например, продажи, цены) вместо того, чтобы пытаться классифицировать их по категориям (например, кошка, собака). Модели линейной регрессии можно разделить на два основных типа:

Простая линейная регрессия

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

Многовариантная регрессия

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

Переменные x_1, x_2, x_3 представлять атрибуты или отдельные части информации, которую мы имеем о каждом наблюдении.

Функция потери

Учитывая наше простое уравнение линейной регрессии:

Мы можем использовать следующую функцию стоимости, чтобы найти коэффициенты / параметры для нашей модели:

Среднеквадратичная ошибка (MSE) Функция стоимости

MSE определяется как:

MSE измеряет, насколько средние прогнозы модели отличаются от правильных значений. Число выше, когда модель выполняет «плохо» на наших данных обучения

Первая производная от MSE определяется как:

Одна средняя квадратическая ошибка (OHMSE)

Мы применим небольшую модификацию к MSE — умножим на1/2поэтому, когда мы берем производную,2sотменяет:

Первая производная OHMSE определяется как:

Давайте реализуем это в Python (да, мы будем использовать стиль TDD!)

Теперь, когда у нас есть готовые тесты, мы можем реализовать функцию потерь:

время для результатов:

Предварительная обработка данных

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

где µ — среднее значение популяции, а σ — стандартное отклонение.

Но почему? Зачем нам это делать? Следующая таблица может вам помочь:

Что показывает рисунок, так это то, что наш старый друг — алгоритм градиентного спуска мог бы сходиться (находить хорошие параметры) быстрее, когда наши тренировочные данные масштабируются. А не ___ ли нам?

Мы будем использовать только greater living area особенность для нашей первой модели.

Реализация линейной регрессии

Сначала наши тесты:

Без дальнейших церемоний, простая реализация линейной регрессии:

Возможно, вы найдете нашу реализацию линейной регрессии более простой по сравнению с той, которая представлена ​​для логистической регрессии. Обратите внимание, что использование алгоритма градиентного спуска практически одинаково. Интересно, не правда ли? Один алгоритм может построить два разных типа моделей. Сможем ли мы использовать это для большего?

Предсказание цены продажи с нашей первой моделью

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

Итак, как прошло обучение?

Наша стоимость на последней итерации имеет значение:

Можем ли мы сделать лучше?

Многовариантная линейная регрессия

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

ВнедрениеМноговариантная линейная регрессия

Это пространство намеренно оставлено (вроде) пустым

Использование многопараметрической линейной регрессии

Теперь, когда реализация нашей новой модели завершена, мы можем ее использовать. Выполнено!?

Видите ли, молодой падаван, волшебный мир разработки программного обеспечения имеет те мифические создания, которые называютсяабстракциями, Хотя это может быть чрезвычайно сложно сделать правильно, они могут снизить сложность кода, который вы пишете (в значительной степени) на тонну.

Вы только что использовали одну такую ​​абстракцию — называетсявекторизации, По сути, это позволило нам построитьМноговариантная линейная регрессиямодель без необходимости перебирать все функции в нашем наборе данных. Аккуратно, верно?

Наш клиентский интерфейс тоже остается прежним:

Потери на последней итерации почти в 2 раза меньше. Значит ли это, что наша модель стала лучше?

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

Линейная регрессия

colab.research.google.com

Вывод

Ницца! Вы только что реализовали модель линейной регрессии, а не простой / дерьмовый вид.

Одна вещь, которую вы, возможно, захотите попробовать, — это предсказать цены продажи домов по тестовому набору данных Kaggle Эта модель хороша?

В следующей части вы собираетесь реализовать модель дерева решений с нуля!

Машинное обучение из серии Scratch:

  1. Смарт-скидки с логистической регрессией
  2. Прогнозирование цен на жилье с помощью линейной регрессии
  3. Построение дерева решений с нуля в Python
  4. Извлечение цветовой палитры с кластеризацией K-средних
  5. Анализ настроения при просмотре фильма с помощью Naive Bayes
  6. Музыкальный художник Recommender System с использованием Stochastic Gradient Descent
  7. Классификация изображений модных товаров с использованием нейронных сетей
  8. Постройте агента по вождению такси в постапокалиптическом мире, используя Reinforcement Learning

Как то, что вы читаете? Хотите узнать больше о машинном обучении? Выровняйте свое понимание ML:

Источник

Оцените статью