Apprentissage automatique - Régression multiple
Régression multiple
La régression multiple est comme la régression linéaire , mais avec plus d'une valeur indépendante, ce qui signifie que nous essayons de prédire une valeur basée sur deux variables ou plus.
Jetez un oeil à l'ensemble de données ci-dessous, il contient des informations sur les voitures.
Auto | Modèle | Le volume | Poids | CO2 |
Toyota | Aygo | 1000 | 790 | 99 |
Mitsubishi | Étoile de l'espace | 1200 | 1160 | 95 |
Skoda | Citigo | 1000 | 929 | 95 |
Décret | 500 | 900 | 865 | 90 |
mini | Tonnelier | 1500 | 1140 | 105 |
VW | En haut! | 1000 | 929 | 105 |
Skoda | fabienne | 1400 | 1109 | 90 |
Mercedes | Une classe | 1500 | 1365 | 92 |
Gué | Fête | 1500 | 1112 | 98 |
Audi | A1 | 1600 | 1150 | 99 |
Hyundai | I20 | 1100 | 980 | 99 |
Suzuki | Rapide | 1300 | 990 | 101 |
Gué | Fête | 1000 | 1112 | 99 |
Honda | Civique | 1600 | 1252 | 94 |
Hyundai | I30 | 1600 | 1326 | 97 |
Opel | Astra | 1600 | 1330 | 97 |
BMW | 1 | 1600 | 1365 | 99 |
Mazda | 3 | 2200 | 1280 | 104 |
Skoda | Rapide | 1600 | 1119 | 104 |
Gué | Concentrer | 2000 | 1328 | 105 |
Gué | Mondeo | 1600 | 1584 | 94 |
Opel | Insigne | 2000 | 1428 | 99 |
Mercedes | Classe C | 2100 | 1365 | 99 |
Skoda | Octavie | 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 |
Gué | B-Max | 1600 | 1235 | 104 |
BMW | 2 | 1600 | 1390 | 108 |
Opel | Zafira | 1600 | 1405 | 109 |
Mercedes | SLK | 2500 | 1395 | 120 |
Nous pouvons prédire les émissions de CO2 d'une voiture en fonction de la taille du moteur, mais avec la régression multiple, nous pouvons ajouter plus de variables, comme le poids de la voiture, pour rendre la prédiction plus précise.
Comment ça marche?
En Python, nous avons des modules qui feront le travail pour nous. Commencez par importer le module Pandas.
import pandas
Découvrez le module Pandas dans notre didacticiel Pandas .
Le module Pandas nous permet de lire des fichiers csv et de retourner un objet DataFrame.
Le fichier est destiné à des fins de test uniquement, vous pouvez le télécharger ici : cars.csv
df = pandas.read_csv("cars.csv")
Faites ensuite une liste des valeurs indépendantes et appelez cette variable X
.
Placez les valeurs dépendantes dans une variable appelée y
.
X = df[['Weight', 'Volume']]
y = df['CO2']
Conseil : Il est courant de nommer la liste des valeurs indépendantes avec un X majuscule et la liste des valeurs dépendantes avec un y minuscule.
Nous utiliserons certaines méthodes du module sklearn, nous devrons donc également importer ce module :
from sklearn import linear_model
À partir du module sklearn, nous utiliserons la LinearRegression()
méthode pour créer un objet de régression linéaire.
Cet objet a une méthode appelée fit()
qui prend les valeurs indépendantes et dépendantes comme paramètres et remplit l'objet de régression avec des données décrivant la relation :
regr = linear_model.LinearRegression()
regr.fit(X, y)
Nous avons maintenant un objet de régression prêt à prédire les valeurs de CO2 en fonction du poids et du volume d'une voiture :
#predict the CO2 emission of a car where the weight
is 2300kg, and the volume is 1300cm3:
predictedCO2 = regr.predict([[2300, 1300]])
Exemple
Voir l'exemple entier en action :
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)
Résultat:
[107.2087328]
Nous avons prédit qu'une voiture avec un moteur de 1,3 litre et un poids de 2 300 kg dégagera environ 107 grammes de CO2 pour chaque kilomètre parcouru.
Coefficient
Le coefficient est un facteur qui décrit la relation avec une variable inconnue.
Exemple : si x
est une variable, alors
2x
est x
deux fois. x
est la variable inconnue, et le nombre 2
est le coefficient.
Dans ce cas, on peut demander la valeur du coefficient de poids contre CO2, et de volume contre CO2. La ou les réponses que nous obtenons nous disent ce qui se passerait si nous augmentions ou diminuions l'une des valeurs indépendantes.
Exemple
Imprimez les valeurs de coefficient 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]
Résultat expliqué
Le tableau 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 1 kg, les émissions de CO2 augmentent de 0,00755095 g.
Et si la cylindrée (Volume) du moteur augmente de 1 cm 3 , l'émission de CO2 augmente de 0,00780526 g.
Je pense que c'est une supposition juste, mais laissez-le tester!
Nous avons déjà prédit que si une voiture avec un moteur de 1300cm 3 pèse 2300kg, l'émission de CO2 sera d'environ 107g.
Et si on augmentait le poids de 1000kg ?
Exemple
Copiez l'exemple précédent, mais changez le poids 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]
Nous avons prédit qu'une voiture avec un moteur de 1,3 litre et un poids de 3 300 kg dégagera environ 115 grammes de CO2 pour chaque kilomètre parcouru.
Ce qui montre que le coefficient de 0,00755095 est correct :
107,2087328 + (1000 * 0,00755095) = 114,75968