Apprentissage automatique - Régression multiple

Régression multiple (Multiple Regression)

La régression multiple est comme la régression linéaire, mais avec plusieurs valeurs indépendantes, ce qui signifie que nous essayons de prédire une valeur basée sur deux ou plusieurs variables.

Veuillez consulter les données suivantes, qui contiennent des informations sur les voitures.

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

Nous pouvons prédire la quantité de CO2 émise par un véhicule en fonction de la taille du moteur, mais en utilisant la régression multiple, nous pouvons introduire plus de variables, telles que le poids du véhicule, pour rendre la prédiction plus précise.

Principe de fonctionnement

En Python, nous avons des modules qui peuvent accomplir cette tâche. Tout d'abord, importez le module Pandas :

import pandas

Le module Pandas nous permet de lire les fichiers csv et de renvoyer un objet DataFrame.

Ce fichier est utilisé à des fins de test uniquement, vous pouvez le télécharger ici :cars.csv

df = pandas.read_csv("cars.csv")

Puis énumérer les valeurs indépendantes, et nommer cette variable X.

Mettre les valeurs associées dans une variable nommée y.

X = df[['Weight', 'Volume']]
y = df['CO2']

Conseil :Généralement, nommer la liste des valeurs indépendantes en majuscules X,nommer la liste des valeurs associées en minuscules y

Nous utiliserons certains des méthodes du module sklearn, par conséquent, nous devons également importer ce module :

from sklearn import linear_model

Dans le module sklearn, nous utiliserons LinearRegression() qui crée un objet de régression linéaire.

L'objet a une méthode nommée fit() La méthode, qui prend en paramètres les valeurs indépendantes et dépendantes, et remplit l'objet de régression avec des données décrivant cette relation :

regr = linear_model.LinearRegression()
regr.fit(X, y)

Maintenant, nous avons un objet de régression qui peut prédire les valeurs de CO2 en fonction du poids et du volume du véhicule :

# Prédire la quantité de CO2 émise par un véhicule pesant 2300kg et ayant un volume de 1300ccm :
predictedCO2 = regr.predict([[2300, 1300]])

Exemple

Voyons un exemple complet :

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)
# Prédire la quantité de CO2 émise par un véhicule pesant 2300kg et ayant un volume de 1300ccm :
predictedCO2 = regr.predict([[2300, 1300]])
print(predictedCO2)

Résultat :

[107.2087328]

Exécuter l'exemple

Nous prédisons qu'un véhicule équipé d'un moteur de 1,3 litre, pesant 2300 kg, émettra environ 107 grammes de dioxyde de carbone pour chaque kilomètre parcouru.

Coefficient

Un coefficient est un facteur qui décrit la relation avec une variable inconnue.

Par exemple : si x si une variable est 2x C'est x deux fois.x C'est une variable inconnue, le nombre 2 C'est un coefficient.

Dans ce cas, nous pouvons demander les valeurs des coefficients de poids par rapport au CO2, ainsi que les valeurs des coefficients de volume par rapport au CO2. Les réponses que nous obtenons nous indiquent ce qui se passera si nous augmentons ou diminuons l'une des valeurs indépendantes.

Exemple

Imprimer les valeurs des coefficients de l'objet de régression :

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_)

Résultat :

[0.00755095 0.00780526]

Exécuter l'exemple

Explication des résultats

L'array de résultats représente les valeurs des coefficients de poids et de volume.

Poids: 0.00755095
Volume: 0.00780526

Ces valeurs nous indiquent que si le poids augmente de 1g, la quantité de CO2 émise augmentera de 0.00755095g.

Si la taille (volume) du moteur augmente de 1 ccm, la quantité de CO2 émise augmentera de 0.00780526g.

Je pense que c'est une bonne estimation, mais faites toujours des tests !

Nous avons prédit précédemment que si une voiture équipée d'un moteur de 1300ccm pèse 2300 kg, la quantité de dioxyde de carbone émis serait d'environ 107 grammes.

Que se passerait-il si nous ajoutions 1000g de poids ?

Exemple

Copiez l'exemple précédent, mais changez le poids du véhicule de 2300 à 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)

Résultat :

[114.75968007]

Exécuter l'exemple

Nous avons prédit que, pour une voiture équipée d'un moteur de 1,3 litre et pesant 3,3 tonnes, la libération d'environ 115 grammes de dioxyde de carbone est libérée pour chaque kilomètre parcouru.

Cela indique que le coefficient de 0.00755095 est correct :

107.2087328 + (1000 * 0.00755095) = 114.75968