Construindo Regressão Linear
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 Dados
Temos um arquivo, simple_height_data.csv, com os dados dos nossos exemplos. Vamos carregar o arquivo e analisá-lo:
123456import 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 é a característica de entrada, e a segunda é 'Height', que é nossa variável alvo.
Os valores alvo serão atribuídos à variável y e os valores das características à variável X, e será construído um gráfico de dispersão.
123456import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Encontrando Parâmetros
Para implementar a regressão linear no Scikit-learn, utiliza-se a classe LinearRegression.
LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)
Parâmetros
A classe LinearRegression possui diversos parâmetros que controlam como o modelo será ajustado.
fit_intercept(padrão=True): Define se o intercepto (viés) será calculado para este modelo. Se definido comoFalse, nenhum intercepto será utilizado nos cálculos (ou seja, os dados devem estar centralizados).copy_X(padrão=True): SeTrue, X será copiado; caso contrário, pode ser sobrescrito.n_jobs(padrão=None): Número de tarefas a serem usadas no cálculo. Isso só proporcionará ganho de desempenho para n_targets > 1 e problemas suficientemente grandes.Nonesignifica 1, exceto em contextojoblib.parallel_backend.-1significa usar todos os processadores.positive(padrão=False): Quando definido comoTrue, força os coeficientes a serem positivos. Esta opção é suportada apenas para arrays densos.
Métodos Comuns
fit(X, y): Ajusta o modelo linear.predict(X): Realiza previsões utilizando o modelo linear.score(X, y): Retorna o coeficiente de determinação da previsão.
Atributos
coef_: Coeficientes estimados para o problema de regressão linear.intercept_: Termo independente no modelo linear.
No Scikit-learn, utiliza-se a classe LinearRegression do módulo linear_model. Diferente do NumPy, não se define o grau aqui; esta classe é projetada especificamente para modelos lineares. O método .fit() é utilizado para calcular os parâmetros.
Exemplo:
1234567891011121314from sklearn.linear_model import LinearRegression import numpy as np # Convert the pandas Series to a NumPy array, then reshape X_reshaped = X.values.reshape(-1, 1) model = LinearRegression() model.fit(X_reshaped, y) # Train the model beta_0 = model.intercept_ # Get the intercept (beta_0) beta_1 = model.coef_[0] # Get the coefficient (beta_1) print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Se não estiver familiarizado com a sintaxe model.intercept_ e model.coef_, esta é uma convenção do Scikit-learn. Atributos calculados (aprendidos) durante o processo de treinamento sempre terminam com um sublinhado _ (por exemplo, intercept_, coef_).
O intercept_ é um valor único, enquanto coef_ é um array que contém os coeficientes para cada característica (em regressão linear simples, possui apenas um item).
Realizando as Previsões
Agora podemos traçar a linha e prever novas variáveis utilizando o modelo treinado.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Agora que temos o modelo treinado, podemos utilizar o método .predict() para prever novos valores.
123X_new = np.array([[65], [70], [75]]) # Feature values (must be 2D) y_pred = model.predict(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!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Incrível!
Completion taxa melhorada para 3.33
Construindo Regressão Linear
Deslize para mostrar o menu
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 Dados
Temos um arquivo, simple_height_data.csv, com os dados dos nossos exemplos. Vamos carregar o arquivo e analisá-lo:
123456import 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 é a característica de entrada, e a segunda é 'Height', que é nossa variável alvo.
Os valores alvo serão atribuídos à variável y e os valores das características à variável X, e será construído um gráfico de dispersão.
123456import matplotlib.pyplot as plt X = df['Father'] # Assign the feature y = df['Height'] # Assign the target plt.scatter(X,y) # Build scatterplot plt.show()
Encontrando Parâmetros
Para implementar a regressão linear no Scikit-learn, utiliza-se a classe LinearRegression.
LinearRegression(fit_intercept=True, copy_X=True, n_jobs=None, positive=False)
Parâmetros
A classe LinearRegression possui diversos parâmetros que controlam como o modelo será ajustado.
fit_intercept(padrão=True): Define se o intercepto (viés) será calculado para este modelo. Se definido comoFalse, nenhum intercepto será utilizado nos cálculos (ou seja, os dados devem estar centralizados).copy_X(padrão=True): SeTrue, X será copiado; caso contrário, pode ser sobrescrito.n_jobs(padrão=None): Número de tarefas a serem usadas no cálculo. Isso só proporcionará ganho de desempenho para n_targets > 1 e problemas suficientemente grandes.Nonesignifica 1, exceto em contextojoblib.parallel_backend.-1significa usar todos os processadores.positive(padrão=False): Quando definido comoTrue, força os coeficientes a serem positivos. Esta opção é suportada apenas para arrays densos.
Métodos Comuns
fit(X, y): Ajusta o modelo linear.predict(X): Realiza previsões utilizando o modelo linear.score(X, y): Retorna o coeficiente de determinação da previsão.
Atributos
coef_: Coeficientes estimados para o problema de regressão linear.intercept_: Termo independente no modelo linear.
No Scikit-learn, utiliza-se a classe LinearRegression do módulo linear_model. Diferente do NumPy, não se define o grau aqui; esta classe é projetada especificamente para modelos lineares. O método .fit() é utilizado para calcular os parâmetros.
Exemplo:
1234567891011121314from sklearn.linear_model import LinearRegression import numpy as np # Convert the pandas Series to a NumPy array, then reshape X_reshaped = X.values.reshape(-1, 1) model = LinearRegression() model.fit(X_reshaped, y) # Train the model beta_0 = model.intercept_ # Get the intercept (beta_0) beta_1 = model.coef_[0] # Get the coefficient (beta_1) print('beta_0 is', beta_0) print('beta_1 is', beta_1)
Se não estiver familiarizado com a sintaxe model.intercept_ e model.coef_, esta é uma convenção do Scikit-learn. Atributos calculados (aprendidos) durante o processo de treinamento sempre terminam com um sublinhado _ (por exemplo, intercept_, coef_).
O intercept_ é um valor único, enquanto coef_ é um array que contém os coeficientes para cada característica (em regressão linear simples, possui apenas um item).
Realizando as Previsões
Agora podemos traçar a linha e prever novas variáveis utilizando o modelo treinado.
123plt.scatter(X, y) # Build a scatter plot plt.plot(X, model.predict(X_reshaped), color='red') # Plot the line using predictions plt.show()
Agora que temos o modelo treinado, podemos utilizar o método .predict() para prever novos valores.
123X_new = np.array([[65], [70], [75]]) # Feature values (must be 2D) y_pred = model.predict(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!