Набор данных Tokai House Price
Для этого проекта мне нужны были данные по домам в Токае. Итак, я наскреб Property24, получив количество спален, ванных комнат, паркингов, квадратных метров дома и цену за двадцать домов. Хотя в идеале я должен был получить еще несколько характеристик (таких как размер Erf) и гораздо больше домов, я посчитал, что двадцати домов с четырьмя характеристиками достаточно для прототипа — чтобы посмотреть, стоит ли проводить дальнейшие исследования.
- Количество спален.
- Количество ванных комнат.
- Количество парковочных мест для автомобилей.
- Квадратный метр.
Что такое регресс?
Регрессия — это статистическая модель, используемая для прогнозирования взаимосвязи между независимыми и зависимыми переменными — в машинном обучении независимые переменные называются «признаками», тогда как зависимая переменная называется «меткой». Регрессия используется для ответа на такие вопросы, как «сколько?» и «сколько?» Например, сколько денег мы могли бы заработать? Вообще говоря, существует три типа проблем регрессии.
- Одиночная линейная: одна функция, линейно связанная с меткой.
- Одиночный нелинейный: один объект, не связанный линейно с меткой.
- Многофункциональный: более одной функции, но только один ярлык.
В этом посте я обучаю алгоритм регрессии с использованием нескольких переменных из набора данных 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)
Давайте разберемся с моделью
Хотя для улучшения этой модели требуется дополнительная работа — например, увеличение количества домов и характеристик в наборе данных — теперь эту модель можно использовать для прогнозирования оценочной цены дома в Токайском Кейптауне.