Aprendizado de Máquina - Regressão Multivariada
- Página Anterior Regressão Polinomial
- Próxima Página Escala
Regressão Múltipla (Multiple Regression)
A regressão múltipla é como a regressão linear, mas com múltiplos valores independentes, o que significa que tentamos prever um valor com base em duas ou mais variáveis.
Veja os dados a seguir, que contêm algumas informações sobre carros.
Car | Model | Volume | Weight | CO2 |
---|---|---|---|---|
Toyota | Aygo | 1000 | 790 | 99 |
Mitsubishi | Space Star | 1200 | 1160 | 95 |
Skoda | Citigo | 1000 | 929 | 95 |
Fiat | 500 | 900 | 865 | 90 |
Mini | Cooper | 1500 | 1140 | 105 |
VW | Up! | 1000 | 929 | 105 |
Skoda | Fabia | 1400 | 1109 | 90 |
Mercedes | A-Class | 1500 | 1365 | 92 |
Ford | Fiesta | 1500 | 1112 | 98 |
Audi | A1 | 1600 | 1150 | 99 |
Hyundai | I20 | 1100 | 980 | 99 |
Suzuki | Swift | 1300 | 990 | 101 |
Ford | Fiesta | 1000 | 1112 | 99 |
Honda | Civic | 1600 | 1252 | 94 |
Hundai | I30 | 1600 | 1326 | 97 |
Opel | Astra | 1600 | 1330 | 97 |
BMW | 1 | 1600 | 1365 | 99 |
Mazda | 3 | 2200 | 1280 | 104 |
Skoda | Rapid | 1600 | 1119 | 104 |
Ford | Focus | 2000 | 1328 | 105 |
Ford | Mondeo | 1600 | 1584 | 94 |
Opel | Insignia | 2000 | 1428 | 99 |
Mercedes | C-Class | 2100 | 1365 | 99 |
Skoda | Octavia | 1600 | 1415 | 99 |
Volvo | S60 | 2000 | 1415 | 99 |
Mercedes | CLA | 1500 | 1465 | 102 |
Audi | A4 | 2000 | 1490 | 104 |
Audi | A6 | 2000 | 1725 | 114 |
Volvo | V70 | 1600 | 1523 | 109 |
BMW | 5 | 2000 | 1705 | 114 |
Mercedes | E-Class | 2100 | 1605 | 115 |
Volvo | XC70 | 2000 | 1746 | 117 |
Ford | B-Max | 1600 | 1235 | 104 |
BMW | 2 | 1600 | 1390 | 108 |
Opel | Zafira | 1600 | 1405 | 109 |
Mercedes | SLK | 2500 | 1395 | 120 |
Podemos prever a emissão de CO2 de um carro com base no volume do motor, mas através da regressão multivariada, podemos introduzir mais variáveis, como o peso do carro, para tornar a predição mais precisa.
Princípio de funcionamento
No Python, temos módulos que podem fazer esse trabalho. Primeiro, importe o módulo Pandas:
import pandas
O módulo Pandas nos permite ler arquivos csv e retornar um objeto DataFrame.
Este arquivo é usado apenas para fins de teste, você pode baixá-lo aqui:cars.csv
df = pandas.read_csv("cars.csv")
A seguir, liste os valores independentes e nomeie essa variável X.
Coloque os valores relevantes em uma variável chamada y.
X = df[['Weight', 'Volume']] y = df['CO2']
Dica:Normalmente, nomeie a lista de valores independentes em maiúsculas X
,nomeie a lista de valores relevantes em minúsculas y
.
Vamos usar alguns métodos do módulo sklearn, então também precisamos importar o módulo:
from sklearn import linear_model
No módulo sklearn, usaremos LinearRegression()
método para criar um objeto de regressão linear.
O objeto tem um método chamado fit()
método, que toma os valores independentes e dependentes como parâmetros e preenche o objeto de regressão com dados que descrevem essa relação:
regr = linear_model.LinearRegression() regr.fit(X, y)
Agora, temos um objeto de regressão que pode prever o valor de CO2 com base no peso e capacidade do carro:
# Prever a emissão de CO2 de um carro com peso de 2300kg e capacidade de 1300ccm: predictedCO2 = regr.predict([[2300, 1300]])
Exemplo
Veja o exemplo completo:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) # Prever a emissão de CO2 de um carro com peso de 2300kg e capacidade de 1300ccm: predictedCO2 = regr.predict([[2300, 1300]]) print(predictedCO2)
Resultados:
[107.2087328]
Prevermos que um carro com motor de 1.3 litros e peso de 2300 kg liberará cerca de 107 gramas de dióxido de carbono a cada quilômetro rodado.
Coeficiente
O coeficiente é o fator que descreve a relação com a variável desconhecida.
Por exemplo: se x
Se a variável é 2x
É x
dobro.x
É a variável desconhecida, o número 2
É o coeficiente.
Neste caso, podemos solicitar os coeficientes de peso em relação ao CO2, bem como os coeficientes de volume em relação ao CO2. A resposta que obtemos nos diz o que acontece se aumentarmos ou reduzirmos um dos valores independentes.
Exemplo
Imprimir os coeficientes do objeto de regressão:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) print(regr.coef_)
Resultados:
[0.00755095 0.00780526]
Explicação dos resultados
O array de resultados representa os coeficientes de peso e capacidade.
Peso: 0.00755095 Volume: 0.00780526
Esses valores nos dizem que, se o peso aumentar em 1g, a emissão de CO2 aumentará em 0.00755095g.
Se o tamanho do motor (volume) aumentar em 1 ccm, a emissão de CO2 aumentará em 0.00780526g.
Acho que é uma estimativa razoável, mas ainda por favor faça o teste!
Já previmos que, se um carro com motor de 1300ccm e peso de 2300 kg emitir cerca de 107 gramas de dióxido de carbono.
E se aumentarmos 1000g de peso?
Exemplo
Repita o exemplo anterior, mas mude o peso do carro de 2300 para 3300:
import pandas from sklearn import linear_model df = pandas.read_csv("cars.csv") X = df[['Weight', 'Volume']] y = df['CO2'] regr = linear_model.LinearRegression() regr.fit(X, y) predictedCO2 = regr.predict([[3300, 1300]]) print(predictedCO2)
Resultados:
[114.75968007]
Preveemos que um carro com motor de 1.3 litros e peso de 3.3 toneladas liberará cerca de 115 gramas de dióxido de carbono a cada quilômetro rodado.
Isso indica que o coeficiente de 0.00755095 está correto:
107.2087328 + (1000 * 0.00755095) = 114.75968
- Página Anterior Regressão Polinomial
- Próxima Página Escala