Regressão Linear Múltipla com Descida de Gradiente

No notebook Regressão Linear Simples com Descida de Gradiente foi mostrado como funciona a regressão linear para prever uma resposta (preço de uma casa) a partir de uma variável de entrada (tamanho de uma casa).

Entretanto, existem diversos casos nos quais temos duas ou mais variáveis de entrada para prever uma resposta. Para isso precisamos de uma abordagem que estenda a Regressão Linear Simples para suportar múltiplas variáveis de entrada.

Neste notebook, além dos dados dos tamanhos das casas para prever os preços, usaremos também o número de quartos. A seguir temos um gráfico tridimensional mostrando cada casa dos dados de treinamento como um ponto de acordo com as três características (tamanho, número de quartos e preço).

In [1]:
import plotly
import plotly.graph_objs as go
plotly.offline.init_notebook_mode()

sizes = [0.998, 1.500, 1.175, 1.232, 1.121, 0.988, 1.240, 1.501, 1.225, 1.552, 0.975, 1.121, 1.020,
         1.501, 1.664, 1.488, 1.376, 1.500, 1.256, 1.690, 1.820, 1.652, 1.777, 1.504, 1.831, 1.200]

bedrooms = [4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 2, 3, 4, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3]

prices = [25.9, 29.5, 27.9, 25.9, 29.9, 29.9, 30.9, 28.9, 35.9, 31.5, 31.0, 30.9, 30.0, 28.9, 36.9,
          41.9, 40.5, 43.9, 37.5, 37.9, 44.5, 37.9, 38.9, 36.9, 45.8, 41.0]

plot = go.Scatter3d(x=sizes, y=bedrooms, z=prices, mode='markers')
layout = go.Layout(width=900, height=400,
                   margin=go.layout.Margin(l=10, r=10, b=10, t=10, pad=10),
                   scene=dict(xaxis=dict(title="tamanho"), yaxis=dict(title="quartos"), zaxis=dict(title="preço")))

data = [plot]
plotly.offline.iplot({'data': data, 'layout': layout})