Привет, Data Nerds, сегодня мы увидим, как вы можете использовать простое прогнозирование цен на жилье с одной переменной, используя Python с линейной регрессией.
Мы просто собираемся использовать функции модели для линейной регрессии, которая выражается формулой:
Параметры w и b рассчитываются с помощью Gradient-Descent. Для расчета градиентного спусканам также необходимо провести расчеты функции стоимости, поэтому мыgувидим эти расчеты в одном из наших будущих блогов. В этом блоге для простоты вычислений мы собираемся принять значения w и b как 200 и 100 соответственно.
Для написания кода нам понадобятся эти две библиотеки Python:
a. numpy
б. matplotlib
Я предполагаю, что вы знакомы с основами кодирования Python и знакомы с этими библиотеками Python. Итак, давайте начнем с нашего кода.
# Importing the Python libraries that we are going to require # for the calculations import numpy as np import matplotlib.pyplot as plt
Мы будем использовать простой набор данных только с двумя точками данных — дом площадью 1000 квадратных футов (кв. фут), проданный за 300 000 долларов, и дом площадью 2000 квадратных футов, проданный за 500 000 долларов. Эти две точки будут составлять наши данные или набор данных для обучения. Единицы размера – 1000 кв. футов, а единицы цены – тысячи долларов.
Настройка входных и целевых переменных
# x_train is the input variable (size in 1000 square feet) # y_train is the target (price in 1000s of dollars) x_train = np.array([1.0,2.0]) y_train = np.array([300.0, 500.0])
Нахождение количества обучающих примеров `m`
# Numpy arrays have a `.shape` parameter. # `x_train.shape` returns a python tuple with an entry for each dimension. # m is the number of training examples that we will require for iterating the # model function m = x_train.shape[0]
Учебный пример `x_i, y_i`
Мы будем использовать (x(𝑖), y(𝑖)) для обозначения обучающего примера 𝑖𝑡ℎ. Поскольку Python имеет нулевой индекс, (x(0), y(0)) равно (1,0, 300,0) и (x(1), y(1)) равно (2,0, 500,0).
Чтобы получить доступ к значению в массиве Numpy, нужно индексировать массив с желаемым смещением. Например, синтаксис для доступа к нулевому местоположению x_train
— x_train[0]
.
i = 1 # Right now we only have two values for i x_i = x_train[i] y_i = y_train[i]
График данных
Вы можете построить эти две точки, используя функцию scatter()
в библиотеке matplotlib
, как показано в ячейке ниже.
— Аргументы функции marker
и c
показывают точки в виде красных крестиков (по умолчанию — синие точки).
Вы можете использовать другие функции в библиотеке matplotlib
, чтобы установить заголовок и метки для отображения.
# Plot the data points plt.scatter(x_train, y_train, marker='x', c='r') #Set the title plt.title("Housing Prices") #Set the y-axis label plt.ylabel("Price (in 1000s of dollars)") #Set the x-axis label plt.xlabel("Size (in 1000s of sqft)") plt.show()
Вычисление функции модели
Мы предполагаем, что значения w и b равны 200 и 100 соответственно, как указано выше. Мы собираемся увидеть, как мы можем рассчитать эти параметры в следующем блоге.
# w and b are model parameters # We are assuming their values for ease of calculations w = 200 b = 100
Теперь давайте вычислим значение функции модели (𝑓𝑤,𝑏(𝑥(𝑖))) для двух ваших точек данных. Вы можете явно записать это для каждой точки данных как:
def compute_model_output(x, w, b): m = x.shape[0] f_wb = np.zeros(m) for i in range(m): f_wb[i] = w * x[i] + b return f_wb
Теперь давайте вызовем функцию `compute_model_output` и построим график вывода.
tmp_f_wb = compute_model_output(x_train, w, b) # Plot our model prediction plt.plot(x_train, tmp_f_wb, c="b", label="Our Prediction") # Plot the data points plt.scatter(x_train, y_train, marker="x", c="r", label="Actual Values") # Set the title plt.title("Housing Prices") #Set the y-axis label plt.ylabel("Price in (1000s of dollars)") #Set the x-axis label plt.xlabel("size in (1000s of sqft)") plt.legend() plt.show()
Теперь давайте продолжим и спрогнозируем цену на жилье для дома площадью 1200 кв. Футов.
w = 200 b = 100 x_i = 1.2 cost_1200_sqft = w * x_i + b print("Cost of House with size 1200 sqft is", cost_1200_sqft, "thousand dollars")
После запуска вышеуказанного блока кода вы получите оценку стоимости дома площадью 1200 кв. футов. Я уже знаю ответ, но позволю вам всем попробовать и убедиться в этом самим. Так веселее, не правда ли?
Если вы хотите, вы можете получить записную книжку Python из моего репозитория GitHub, нажав здесь.
Хорошо, я надеюсь, вам понравилось читать и следить за этим блогом. Не стесняйтесь обращаться ко мне, если у вас есть какие-либо вопросы или проблемы. А пока, все мои знатоки данных, продолжайте прогнозировать. ✌️