La regresión múltiple es como la regresión lineal, pero con más de un valor independiente, lo que significa que tratamos de predecir un valor en función de dos o más variables.
Eche un vistazo al conjunto de datos a continuación, contiene información sobre automóviles.
Coche | Modelo | Cantidad | Peso | 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 |
Hyundai | 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 | C60 | 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 |
Mercededs | 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 predecir las emisiones de CO2 de un automóvil en función del tamaño del motor, pero con la regresión múltiple podemos agregar más variables, como el peso del automóvil, para que la predicción sea más precisa.
¿Como funciona?
En Python tenemos módulos que harán el trabajo por nosotros. Comience importando el módulo Pandas.
import pandas
Aprende sobre el módulo Pandas en nuestro Tutorial de Pandas.
El módulo Pandas nos permite leer archivos csv y devolver un objeto DataFrame.
El archivo está destinado solo para fines de prueba, puede descargarlo aquí: data.csv
df = pandas.read_csv("data.csv")
Luego haz una lista de los valores independientes y llama a esta variable X.
Ponga los valores dependientes en una variable llamada y.
X = df[['Weight', 'Volumen']] y = df['CO2']
Sugerencia: es común nombrar la lista de valores independientes con una X mayúscula y la lista de valores dependientes con una y minúscula.
Usaremos algunos métodos del módulo sklearn, por lo que también tendremos que importar ese módulo:
from sklearn import linear_model
Desde el módulo sklearn usaremos el método LinearRegression() para crear un objeto de regresión lineal.
Este objeto tiene un método llamado fit() que toma los valores independientes y dependientes como parámetros y llena el objeto de regresión con datos que describen la relación:
regr = linear_model.LinearRegression() regr.fit(X, y)
Ahora tenemos un objeto de regresión que está listo para predecir los valores de CO2 en función del peso y el volumen de un automóvil:
#predict the CO2 emission of a car where the weight is 2300kg, and the volume is 1300cm3: predictedCO2 = regr.predict([[2300, 1300]])
Ejemplo
Vea el ejemplo completo en acción:
import pandas from sklearn import linear_model
df = pandas.read_csv("data.csv")
X = df[['Weight', 'Volumen']]
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]])
Hemos pronosticado que un coche con motor de 1,3 litros y un peso de 2300 kg, emitirá aproximadamente 107 gramos de CO2 por cada kilómetro recorrido.
Coeficiente
El coeficiente es un factor que describe la relación con una variable desconocida.
Ejemplo: si x es una variable, entonces 2x es x dos veces. x es la variable desconocida y el número 2 es el coeficiente.
En este caso, podemos pedir el valor del coeficiente de peso frente a CO2, y el de volumen frente a CO2. La(s) respuesta(s) que obtenemos nos dice qué pasaría si aumentamos o disminuimos uno de los valores independientes.
import pandas from sklearn import linear_model
df = pandas.read_csv("data.csv")
X = df[['Weight', 'Volumen']]
y = df['CO2']
regr = linear_model.LinearRegression()
regr.fit(X, y)
print(regr.coef_)
Resultado explicado
La matriz de resultados representa los valores de los coeficientes de peso y volumen.
Peso: 0.00755095
Volumen: 0.00780526
Estos valores nos dicen que si el peso aumenta en 1 kg, la emisión de CO2 aumenta en 0,00755095 g.
Y si el tamaño del motor (Volumen) aumenta en 1 cm3, la emisión de CO2 aumenta en 0,00780526 g.
Creo que es una suposición justa, ¡pero vamos a probarlo!
Ya hemos pronosticado que si un coche con un motor de 1300 cm3 pesa 2300 kg, la emisión de CO2 será de aproximadamente 107 g.
¿Qué pasa si aumentamos el peso con 1000 kg?
Ejemplo
Copie el ejemplo anterior, pero cambie el peso de 2300 a 3300:
import pandas
from sklearn import linear_model
df = pandas.read_csv("data.csv")
X = df[['Weight', 'Volumen']]
y = df['CO2']
regr = linear_model.LinearRegression()
regr.fit(X, y)
predictedCO2 = regr.predict([[3300, 1300]])
print(predictedCO2)
Resultado:
[114.75968007]
Hemos pronosticado que un coche con motor de 1,3 litros y un peso de 3300 kg, emitirá aproximadamente 115 gramos de CO2 por cada kilómetro recorrido.
Lo que demuestra que el coeficiente de 0.00755095 es correcto:
107,2087328 + (1000 * 0,00755095) = 114,75968