Aprendizado de Máquina - Regressão Múltipla
Regressão múltipla
A regressão múltipla é como a regressão linear , mas com mais de um valor independente, o que significa que tentamos prever um valor com base em duas ou mais variáveis.
Dê uma olhada no conjunto de dados abaixo, ele contém algumas informações sobre carros.
Carro | Modelo | Volume | Peso | CO2 |
Toyota | Aygo | 1000 | 790 | 99 |
Mitsubishi | Estrela do Espaço | 1200 | 1160 | 95 |
Skoda | Citigo | 1000 | 929 | 95 |
Fiat | 500 | 900 | 865 | 90 |
Mini | Tanoeiro | 1500 | 1140 | 105 |
VW | Acima! | 1000 | 929 | 105 |
Skoda | Fábia | 1400 | 1109 | 90 |
Mercedes | Uma aula | 1500 | 1365 | 92 |
Ford | Festa | 1500 | 1112 | 98 |
Audi | A1 | 1600 | 1150 | 99 |
Hyundai | I20 | 1100 | 980 | 99 |
Suzuki | Rápido | 1300 | 990 | 101 |
Ford | Festa | 1000 | 1112 | 99 |
Honda | Cívico | 1600 | 1252 | 94 |
Hyundai | I30 | 1600 | 1326 | 97 |
Opel | Astra | 1600 | 1330 | 97 |
BMW | 1 | 1600 | 1365 | 99 |
Mazda | 3 | 2200 | 1280 | 104 |
Skoda | Rápido | 1600 | 1119 | 104 |
Ford | Foco | 2000 | 1328 | 105 |
Ford | Mondeo | 1600 | 1584 | 94 |
Opel | Insígnia | 2000 | 1428 | 99 |
Mercedes | Classe C | 2100 | 1365 | 99 |
Skoda | Otávia | 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 | Classe E | 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 tamanho do motor, mas com a regressão múltipla podemos incluir mais variáveis, como o peso do carro, para tornar a previsão mais precisa.
Como funciona?
Em Python temos módulos que farão o trabalho para nós. Comece importando o módulo Pandas.
import pandas
Saiba mais sobre o módulo Pandas em nosso Tutorial Pandas .
O módulo Pandas nos permite ler arquivos csv e retornar um objeto DataFrame.
O arquivo é apenas para fins de teste, você pode baixá-lo aqui: cars.csv
df = pandas.read_csv("cars.csv")
Em seguida, faça uma lista dos valores independentes e chame essa variável X
.
Coloque os valores dependentes em uma variável chamada y
.
X = df[['Weight', 'Volume']]
y = df['CO2']
Dica: É comum nomear a lista de valores independentes com X maiúsculo e a lista de valores dependentes com y minúsculo.
Usaremos alguns métodos do módulo sklearn, então teremos que importar esse módulo também:
from sklearn import linear_model
A partir do módulo sklearn, usaremos o LinearRegression()
método para criar um objeto de regressão linear.
Este objeto tem um método chamado fit()
que toma os valores independentes e dependentes como parâmetros e preenche o objeto de regressão com dados que descrevem o relacionamento:
regr = linear_model.LinearRegression()
regr.fit(X, y)
Agora temos um objeto de regressão que está pronto para prever os valores de CO2 com base no peso e volume de um carro:
#predict the CO2 emission of a car where the weight
is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
Exemplo
Veja o exemplo completo em açã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)
#predict the CO2
emission of a car where the weight is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
print(predictedCO2)
Resultado:
[107.2087328]
Previmos que um carro com motor de 1,3 litro e peso de 2.300 kg liberará aproximadamente 107 gramas de CO2 por cada quilômetro percorrido.
Coeficiente
O coeficiente é um fator que descreve a relação com uma variável desconhecida.
Exemplo: se x
é uma variável, então
2x
é x
duas vezes. x
é a variável desconhecida e o número 2
é o coeficiente.
Neste caso, podemos pedir o valor do coeficiente de peso em relação ao CO2 e volume em relação ao CO2. A(s) resposta(s) que obtemos nos diz o que aconteceria se aumentarmos ou diminuirmos um dos valores independentes.
Exemplo
Imprima os valores de coeficiente 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_)
Resultado:
[0.00755095 0.00780526]
Resultado explicado
A matriz de resultados representa os valores dos coeficientes de peso e volume.
Peso: 0,00755095
Volume: 0,00780526
Esses valores nos dizem que se o peso aumentar em 1kg, a emissão de CO2 aumenta em 0,00755095g.
E se o tamanho do motor (Volume) aumenta em 1 cm 3 , a emissão de CO2 aumenta em 0,00780526 g.
Eu acho que é um palpite justo, mas vamos testá-lo!
Já prevíamos que se um carro com motor de 1300cm 3 pesa 2300kg, a emissão de CO2 será de aproximadamente 107g.
E se aumentarmos o peso com 1000kg?
Exemplo
Copie o exemplo anterior, mas altere o peso 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)
Resultado:
[114.75968007]
Previmos que um carro com motor de 1,3 litro e peso de 3.300 kg liberará aproximadamente 115 gramas de CO2 por cada quilômetro percorrido.
O que mostra que o coeficiente de 0,00755095 está correto:
107,2087328 + (1000 * 0,00755095) = 114,75968