Набор данных Tokai House Price

Для этого проекта мне нужны были данные по домам в Токае. Итак, я наскреб Property24, получив количество спален, ванных комнат, паркингов, квадратных метров дома и цену за двадцать домов. Хотя в идеале я должен был получить еще несколько характеристик (таких как размер Erf) и гораздо больше домов, я посчитал, что двадцати домов с четырьмя характеристиками достаточно для прототипа — чтобы посмотреть, стоит ли проводить дальнейшие исследования.

  • Количество спален.
  • Количество ванных комнат.
  • Количество парковочных мест для автомобилей.
  • Квадратный метр.

Что такое регресс?

Регрессия — это статистическая модель, используемая для прогнозирования взаимосвязи между независимыми и зависимыми переменными — в машинном обучении независимые переменные называются «признаками», тогда как зависимая переменная называется «меткой». Регрессия используется для ответа на такие вопросы, как «сколько?» и «сколько?» Например, сколько денег мы могли бы заработать? Вообще говоря, существует три типа проблем регрессии.

  1. Одиночная линейная: одна функция, линейно связанная с меткой.
  2. Одиночный нелинейный: один объект, не связанный линейно с меткой.
  3. Многофункциональный: более одной функции, но только один ярлык.

В этом посте я обучаю алгоритм регрессии с использованием нескольких переменных из набора данных Tokai House Price — этот проект представляет собой задачу нелинейной регрессии с одной характеристикой, где меткой является цена.

ОБУЧЕНИЕ АЛГОРИТМА РЕГРЕССИИ, ИСПОЛЬЗУЯ НЕСКОЛЬКО ФУНКЦИЙ ИЗ НАБОРА ДАННЫХ О ЦЕНАХ TOKAI HOUSE

Шаг 1. Откройте командную строку и получите доступ к Jupyter.

jupyter notebook

Шаг 2: Откройте новое ядро ​​​​Python

Шаг 3: Импортируйте библиотеки Python

import pandas
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style
from matplotlib.pyplot import figure
from sklearn import linear_model
import sklearn
from sklearn.utils import shuffle
import pickle

Шаг 4. Получите доступ к набору данных Tokai House Price и просмотрите пять верхних строк.

data = pandas.read_csv("tokai_houses.csv")
data.head(5)

Шаг 5: Определите функции и метки

label = "price"
featureone = "bedrooms"
featuretwo = "bathrooms"
featurethree = "cars"
featurefour = "sqr-meters"

Шаг 6. Просмотрите взаимосвязь между каждой функцией и меткой

style.use("ggplot")
plt.figure(figsize=(20,5))
plt.scatter(data[featureone], data[label])
plt.legend(loc=4)
plt.xlabel("Bedrooms")
plt.ylabel("Price")
plt.show()

plt.figure(figsize=(20,5))
plt.scatter(data[featuretwo], data[label])
plt.legend(loc=4)
plt.xlabel("Bathrooms")
plt.ylabel("Price")
plt.show()

plt.figure(figsize=(20,5))
plt.scatter(data[featurethree], data[label])
plt.legend(loc=4)
plt.xlabel("Cars")
plt.ylabel("Price")
plt.show()

plt.figure(figsize=(20,5))
plt.scatter(data[featurefour], data[label])
plt.legend(loc=4)
plt.xlabel("Square Meters")
plt.ylabel("Price")
plt.show()

Шаг 7: Разделите набор данных Tokai House Price на 10% на набор данных «Train» и набор данных «Test».

x = np.array(data.drop([label], 1))
y =np.array(data[label])
x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(x, y, test_size=0.1)

Шаг 8: Обучите алгоритм линейной регрессии

best = 0
for _ in range(50):
    x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(x, y, test_size=0.1)
    linear = linear_model.LinearRegression()
    linear.fit(x_train, y_train)
    acc = linear.score(x_test, y_test)
    print("Accuracy: " + str(acc))
    
    if acc > best:
        best = acc
        with open("house_price.pickle", "wb") as f:
            pickle.dump(linear, f)

Шаг 9: Загрузите наиболее точную модель и распечатайте коэффициенты и точку пересечения по оси Y.

pickle_in = open("house_price.pickle", "rb")
linear = pickle.load(pickle_in)
print("------")
print('Coefficient: \n', linear.coef_)
print('Intercept: \n', linear.intercept_)
print("------")

Шаг 10. Прогнозируйте цены на дома в Токае, используя тестовый набор данных.

Я заканчиваю тестированием моей модели с использованием тестового набора данных.

predicted= linear.predict(x_test)
for x in range(len(predicted)):
    print(predicted[x], x_test[x], y_test[x])

Окончательная модель (в ZAR)

Цена дома = (количество спален * -3607764,54) + (количество ванных комнат * 805955,06) + (количество автомобилей * 622554,44) + (квадратный метр * -0,84,45) + 1530185,71)

Давайте разберемся с моделью

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