Привет, 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_trainx_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, нажав здесь.

Хорошо, я надеюсь, вам понравилось читать и следить за этим блогом. Не стесняйтесь обращаться ко мне, если у вас есть какие-либо вопросы или проблемы. А пока, все мои знатоки данных, продолжайте прогнозировать. ✌️