Font size
  • A-
  • A
  • A+
Site color
  • R
  • A
  • A
  • A
Skip to main content
AI4VET AI4VET
  • Home
  • Calendar
  • More
You are currently using guest access
Log in
AI4VET
Home Calendar
Expand all Collapse all
  1. AI/ML Fundamentals
  2. AIML-PT
  3. 3. Modelos de Treino (PT)
  4. Exercício 5.1: Regressão linear

Exercício 5.1: Regressão linear

Regressão linear

Open In Colab

Este caderno segue o conteúdo da lição sobre regressão linear. Nele, pode tentar resolver a tarefa de determinar os preços dos imóveis com base na metragem quadrada.

Primeiro, carregue as bibliotecas de que precisaremos no trabalho futuro.

import numpy as np
from matplotlib import pyplot as plt
np.random.seed(37)

Agora execute a seguinte célula para gerar o conjunto de dados de propriedades imobiliárias. A informação sobre a metragem quadrada é representada pela variável x enquanto a informação sobre os seus preços é representada pela variável y.

x = np.array([43, 25, 66, 80, 105, 70, 40, 85, 84, 102])
y = np.array([60, 32.1, 88.4, 111.4, 120.32, 72.1, 46.3, 90.1, 99.6, 139.2])
 

Execute a célula a seguir para obter uma representação gráfica dos pontos no conjunto de dados.

plt.title('Real Estate Prices')
plt.xlabel('Square Footage')
plt.ylabel('Price')
plt.grid('on')
plt.scatter(x, y)
plt.show()
 

Na célula seguinte, há uma função que desenhará a reta que você escolher no exercício. Logo abaixo está uma função que desenha a reta que você escolhe e as linhas que indicam seus erros. Pode ser útil para você ao procurar os melhores valores de parâmetro. Logo abaixo está uma função que desenha a reta que você escolhe e as linhas que indicam seus erros. Você pode achar útil ao procurar os melhores valores de parâmetro.

def draw_graph(beta_0, beta_1):
  plt.title('Real Estate Prices')
  plt.xlabel('Square Footage')
  plt.ylabel('Price')
  plt.grid('on')
  plt.scatter(x, y)

  model_x = np.linspace(20, 120, 100)
  model_y = beta_0 + beta_1*model_x

  plt.plot(model_x, model_y, color='red')

  plt.show()
 
def draw_graph_with_errors(beta_0, beta_1):
  plt.title('Real Estate Prices')
  plt.xlabel('Square Footage')
  plt.ylabel('Price')
  plt.grid('on')
  plt.scatter(x, y)

  model_x = np.linspace(20, 120, 100)
  model_y = beta_0 + beta_1*model_x

  plt.plot(model_x, model_y, color='red')

  for i in range(0, 10):
    prediction = beta_0 + beta_1*x[i]
    if prediction > y[i]:
      ymin = y[i]
      ymax = prediction
    else:
      ymin = prediction
      ymax = y[i]

    plt.vlines(x=x[i], ymin=ymin, ymax=ymax, colors='blue', linestyles='dotted')

  plt.show()
 

Agora tente selecionar os parâmetros \(\beta_0\) e \(\beta_1\): escolha seus valores no controle deslizante à direita e, em seguida, execute a célula para ver o resultado. Você precisa escolher um par de parâmetros que você acha que melhor se ajustam aos dados disponíveis. Os valores dos parâmetros iniciais são \(\beta_0=3,84\) e \(\beta_1=0,62\).

 
In [31]:
beta_0 = 3.84 #@param {type:"slider", min:-1, max:15, step:0.01}
beta_1 = 0.62 #@param {type:"slider", min:-2, max:4, step:0.01}
print("Odabrani model: y = {beta_0} + {beta_1}*x".format(beta_0=beta_0, beta_1=beta_1))
draw_graph(beta_0, beta_1)
Odabrani model: y = 3.84 + 0.62*x
 
 
 

Na célula abaixo, você precisa inserir os valores dos parâmetros \(\beta_0\) e \(\beta_1\) que você escolheu e, em seguida, executar a célula com a chamada para a função 'draw_graph_with_errors', que mostrará os erros. Se você acha que pode fazer escolhas melhores, volte para a etapa anterior.

beta_0_selected = 3.84
beta_1_selected = 0.62
 
 draw_graph_with_errors(beta_0_selected, beta_1_selected)
 
 

A função de erro associada ao modelo de regressão linear é chamada de mean squared error. A função a seguir pode ajudá-lo a calcular o erro quadrado médio para sua escolha de parâmetros.

def calculate_mean_squared_error(beta_0, beta_1, x, y):
  y_predictions = beta_0 + beta_1 * x
  individual_errors = y - y_predictions
  return np.average(individual_errors**2)
 
calculate_mean_squared_error(beta_0_selected, beta_1_selected, x, y)
Out[ ]:
np.float64(1810.21888)

Ao calcular o erro quadrático médio, baseámo-nos na propriedade da biblioteca 'numpy' que nos permite aplicar funções a vetores de valores. Assim, com o comando 'y_predictions = beta_0 + beta_1*x', calculamos os valores de previsão para todos os x's de uma só vez. Da mesma forma, com a subtração 'individual_errors = y - y_predictions' ao calcular diferenças individuais e quadrá-las 'individual_errors**2'. Desta forma, o código é mais legível e, mais importante, mais rápido de calcular. Isso é valioso para nós devido ao trabalho com grandes quantidades de dados. Claro, também pode escrever sua própria função para calcular o erro quadrático médio para os valores de parâmetro escolhidos \(\beta_0\) e \(\beta_1\). Um lembrete é que ele é calculado usando a fórmula \(MSE = \frac{1}{n}\sum_{i=1}^{n}{(y_i-(\beta_0 + \beta_1x_i))^2}\).

def my_function_to_calculate_mean_squared_error(beta_0, beta_1, x, y):
  pass
 
 
Completion requirements:
  • Make a submission
Previous activity 3.12 Regularização
Next activity Exercício 5.2: Descida de gradiente
You are currently using guest access (Log in)
Data retention summary
Get the mobile app
Get the mobile app
Play Store App Store
Powered by Moodle

This theme was proudly developed by

Conecti.me