Conteúdo do Curso
Regressão Linear com Python
Regressão Linear com Python
Construindo Regressão Linear Usando NumPy
Você já sabe o que é regressão linear simples e como encontrar a linha que melhor se ajusta aos dados. Agora, você passará por todas as etapas de construção de uma regressão linear para um conjunto de dados real.
Carregando os Dados
Temos um arquivo, simple_height_data.csv
, com os dados dos nossos exemplos. Vamos carregar o arquivo e analisá-lo:
import pandas as pd file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file print(df.head()) # Print the first 5 instances from a dataset
O conjunto de dados possui duas colunas: a primeira é 'Father'
, que representa a característica de entrada, e a segunda é 'Height'
, que é nossa variável alvo.
Atribuímos os valores alvo à variável y
e os valores da característica à variável X
, e construímos um gráfico de dispersão.
import pandas as pd import matplotlib.pyplot as plt file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Encontrando os Parâmetros
O NumPy possui uma função útil para encontrar os parâmetros da regressão linear.
A Regressão Linear é uma Regressão Polinomial de grau 1 (falaremos sobre Regressão Polinomial em seções posteriores). Por isso, precisamos definir deg=1
para obter os parâmetros da regressão linear.
Veja um exemplo:
import pandas as pd import numpy as np file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the files X, y = df['Father'], df['Height'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Se você não está familiarizado com a sintaxe beta_1, beta_0 = np.polyfit(X,y,1)
, isso é chamado de desempacotamento. Se você possui um iterador (por exemplo, uma lista, array do NumPy ou série do pandas) que contém dois itens, escrever
a, b = my_iterator
é o mesmo que
a = my_iterator[0]
b = my_iterator[1]
E como o retorno da função polyfit()
é um array do NumPy com dois valores, podemos fazer isso.
Fazendo as Previsões
Agora podemos plotar a linha e prever novas variáveis utilizando os parâmetros.
import pandas as pd import numpy as np import matplotlib.pyplot as plt file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X, y = df['Father'], df['Height'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters plt.scatter(X,y) # Build a scatter plot plt.plot(X, beta_0 + beta_1 * X, color='red') # Plot the line plt.show()
Agora que temos os parâmetros, podemos utilizar a equação da regressão linear para prever novos valores.
import pandas as pd import numpy as np import matplotlib.pyplot as plt file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/simple_height_data.csv' df = pd.read_csv(file_link) # Read the file X, y = df['Father'], df['Height'] # Assign the variables beta_1, beta_0 = np.polyfit(X, y, 1) # Get the parameters X_new = np.array([65, 70, 75]) # Feature values of new instances y_pred = beta_0 + beta_1 * X_new # Predict the target print('Predicted y: ', y_pred)
Portanto, é bastante simples obter os parâmetros da regressão linear. No entanto, algumas bibliotecas também podem fornecer informações adicionais.
Obrigado pelo seu feedback!