Emissions de CO2 et de polluants des véhicules commercialisés en France

Source : data.gouv.fr

In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

Définitions des colonnes du jeu de données

In [2]:
col_def = pd.read_excel("carlab-annuaire-variable.xlsx")
col_def
Out[2]:
nom-colonne typerubrique longueur légende unité
0 lib_mrq_utac varchar 12 la marque NaN
1 lib_mod_doss varchar 20 le modele du dossier NaN
2 lib_mod varchar 20 le modèle commercial NaN
3 dscom varchar 91 la désignation commerciale NaN
4 cnit varchar 15 le Code National d'Identification du Type (CNIT) NaN
5 tvv varchar 36 le Type-Variante-Version (TVV) ou le type Mines NaN
6 cod_cbr varchar 5 le type de carburant NaN
7 hybride varchar 3 une information permettant d’identifier les vé... NaN
8 puiss_admin_98 varnb 2 la puissance administrative NaN
9 puiss_max varnb 11 la puissance maximale (en kW) kW
10 typ_boite_nb_rapp varchar 3 le type de boîte de vitesse et le nombre de ra... NaN
11 conso_urb varnb 11 consommation urbaine de carburant (en l/100km), litre pour 100 km
12 conso_exurb varnb 11 consommation mixte de carburant (en l/100km), litre pour 100 km
13 conso_mixte varnb 11 consommation extra urbaine de carburant (en l/... litre pour 100 km
14 co2 varnb 3 l'émission de CO2 (en g/km), gramme par km
15 co_typ_1 varnb 11 le résultat d’essai de CO type I gramme par km
16 hc varnb 11 les résultats d’essai HC gramme par km
17 nox varnb 11 les résultats d’essai NOx gramme par km
18 hcnox varnb 11 les résultats d’essai HC+NOX gramme par km
19 ptcl varnb 5 le résultat d’essai de particules gramme par km
20 masse_ordma_min varnb 4 la masse en ordre de marche mini kg
21 masse_ordma_max varnb 4 la masse en ordre de marche maxi kg
22 champ_v9 varchar 23 le champ V9 du certificat d’immatriculation qu... NaN
23 date_maj varchar 6 la date de la dernière mise à jour. NaN
24 Carrosserie varchar 19 Carrosserie NaN
25 gamme varchar 14 gamme NaN

Chargement du jeu de données

In [3]:
df = pd.read_csv("mars-2014-complete.csv",encoding="latin",sep=";",decimal=",")
df = df.loc[:, ~df.columns.str.contains('^Unnamed')]
df.head()
Out[3]:
lib_mrq lib_mod_doss lib_mod dscom cnit tvv cod_cbr hybride puiss_admin_98 puiss_max ... hc nox hcnox ptcl masse_ordma_min masse_ordma_max champ_v9 date_maj Carrosserie gamme
0 ALFA-ROMEO 159 159 159 1750 Tbi (200ch) M10ALFVP000G340 939AXN1B52C ES non 12 147.0 ... 0.052 0.032 NaN 0.002 1505 1505 715/2007*692/2008EURO5 mars-14 BERLINE MOY-SUPER
1 ALFA-ROMEO 159 159 159 1750 Tbi (200ch) M10ALFVP000H341 939BXN1B53C ES non 12 147.0 ... 0.052 0.032 NaN 0.002 1555 1555 715/2007*692/2008EURO5 mars-14 BERLINE MOY-SUPER
2 ALFA-ROMEO 159 159 159 2.0 JTDm (136ch) M10ALFVP000E302 939AXR1B64 GO non 7 100.0 ... NaN 0.149 0.175 0.001 1565 1565 715/2007*692/2008EURO5 mars-14 BERLINE MOY-SUPER
3 ALFA-ROMEO 159 159 159 2.0 JTDm (136ch) M10ALFVP000F303 939AXR1B64B GO non 7 100.0 ... NaN 0.149 0.175 0.001 1565 1565 715/2007*692/2008EURO5 mars-14 BERLINE MOY-SUPER
4 ALFA-ROMEO 159 159 159 2.0 JTDm (170ch) M10ALFVP000G304 939AXS1B66 GO non 9 125.0 ... NaN 0.164 0.193 0.001 1565 1565 715/2007*692/2008EURO5 mars-14 BERLINE MOY-SUPER

5 rows × 26 columns

Remarque : la colonne "lib_mrq" semble correspondre à la colonne définie comme "lib_marq_utac" (cf. définition des colonnes du jeu de données).

Résumé des données

In [4]:
df.describe()
Out[4]:
puiss_admin_98 puiss_max conso_urb conso_exurb conso_mixte co2 co_typ_1 hc nox hcnox ptcl masse_ordma_min masse_ordma_max
count 55044.000000 55044.000000 55001.000000 55001.000000 55010.000000 55010.000000 54886.000000 9773.000000 54886.000000 45156.000000 52366.000000 55044.000000 55044.000000
mean 10.551504 118.984916 9.575919 6.730087 7.764832 201.707035 0.181007 0.026552 0.299160 0.233701 0.000892 2102.104553 2341.021801
std 5.126021 45.417430 2.082148 1.038675 1.381668 33.976278 0.145014 0.019279 0.416944 0.037490 0.000990 294.731715 424.067895
min 1.000000 10.000000 0.000000 2.800000 0.600000 13.000000 0.005000 0.000000 0.000000 0.000000 0.000000 825.000000 825.000000
25% 9.000000 100.000000 8.800000 6.500000 7.300000 193.000000 0.061000 0.008000 0.197000 0.216000 0.000000 1982.000000 2075.000000
50% 10.000000 120.000000 9.400000 6.900000 7.800000 205.000000 0.137000 0.030000 0.214000 0.239000 0.001000 2076.000000 2355.000000
75% 10.000000 120.000000 10.200000 7.200000 8.300000 216.000000 0.297000 0.042000 0.228000 0.253000 0.001000 2246.000000 2709.000000
max 81.000000 585.000000 41.099998 14.900000 24.500000 572.000000 0.968000 0.510000 1.846000 0.570000 0.023000 2760.000000 3094.000000
In [5]:
df.describe(include=['O'])
Out[5]:
lib_mrq lib_mod_doss lib_mod dscom cnit tvv cod_cbr hybride typ_boite_nb_rapp champ_v9 date_maj Carrosserie gamme
count 55044 55044 55044 55044 55044 55044 55044 55044 55044 54983 3247 55044 55044
unique 46 483 434 3837 54982 35430 13 2 19 35 5 11 7
top MERCEDES VIANO VIANO VIANO 2.2 CDI M10PELVP197A317 639/2LAA31305N2M3G2T37 GO non M 6 "715/2007*692/2008EURO5 mars-14 MINIBUS MOY-INFER
freq 36220 14031 14031 5874 2 4 49311 54655 31799 23979 2810 46107 33438

Suppression de certaines colonnes

On décide de supprimer certaines colonnes du jeu de données dans la mesure où on estime qu'il n'est pas nécessaire d'en tenir compte dans le cadre de notre analyse. On supprime les colonnes correspondantes aux modèle du dossier, le modèle commercial, la désignation commerciale, le CNIT et le tvv(type variante version) car le numéro de ligne suffie à identifier un véhicule de manière unique et la marque permet de lui associé une "classe" d'appartenance. D'autre part, quand bien même ces colonnes apportent des informations supplémentaires (sur le nombre de chevaux par exemple), les colonnes numériques caractérisent déjà ces éléments (par exemple les colonnes relatives à la puissance du véhicule et aux résultats des tests). De même, on ne considérera pas la date de mise à jour (86% d'entre elles sont le 14 mars). On conserve la colonne du champ V9 car elle donne une information relative à la norme euro, elle-même reliée aux émissions de polluants (dont le CO2)

In [6]:
df = df.drop(['lib_mod_doss','lib_mod','dscom','cnit','tvv','date_maj'],axis=1)
In [7]:
df.head()
Out[7]:
lib_mrq cod_cbr hybride puiss_admin_98 puiss_max typ_boite_nb_rapp conso_urb conso_exurb conso_mixte co2 co_typ_1 hc nox hcnox ptcl masse_ordma_min masse_ordma_max champ_v9 Carrosserie gamme
0 ALFA-ROMEO ES non 12 147.0 M 6 11.3 5.8 7.8 182.0 0.647 0.052 0.032 NaN 0.002 1505 1505 715/2007*692/2008EURO5 BERLINE MOY-SUPER
1 ALFA-ROMEO ES non 12 147.0 M 6 11.5 6.0 8.0 186.0 0.647 0.052 0.032 NaN 0.002 1555 1555 715/2007*692/2008EURO5 BERLINE MOY-SUPER
2 ALFA-ROMEO GO non 7 100.0 M 6 6.6 4.2 5.1 134.0 0.066 NaN 0.149 0.175 0.001 1565 1565 715/2007*692/2008EURO5 BERLINE MOY-SUPER
3 ALFA-ROMEO GO non 7 100.0 M 6 6.6 4.2 5.1 134.0 0.066 NaN 0.149 0.175 0.001 1565 1565 715/2007*692/2008EURO5 BERLINE MOY-SUPER
4 ALFA-ROMEO GO non 9 125.0 M 6 6.9 4.3 5.3 139.0 0.060 NaN 0.164 0.193 0.001 1565 1565 715/2007*692/2008EURO5 BERLINE MOY-SUPER

Nouvelle description

Le jeu de données à changé, on en propose donc une nouvelle description

In [8]:
df.describe()#description des variables numériques
Out[8]:
puiss_admin_98 puiss_max conso_urb conso_exurb conso_mixte co2 co_typ_1 hc nox hcnox ptcl masse_ordma_min masse_ordma_max
count 55044.000000 55044.000000 55001.000000 55001.000000 55010.000000 55010.000000 54886.000000 9773.000000 54886.000000 45156.000000 52366.000000 55044.000000 55044.000000
mean 10.551504 118.984916 9.575919 6.730087 7.764832 201.707035 0.181007 0.026552 0.299160 0.233701 0.000892 2102.104553 2341.021801
std 5.126021 45.417430 2.082148 1.038675 1.381668 33.976278 0.145014 0.019279 0.416944 0.037490 0.000990 294.731715 424.067895
min 1.000000 10.000000 0.000000 2.800000 0.600000 13.000000 0.005000 0.000000 0.000000 0.000000 0.000000 825.000000 825.000000
25% 9.000000 100.000000 8.800000 6.500000 7.300000 193.000000 0.061000 0.008000 0.197000 0.216000 0.000000 1982.000000 2075.000000
50% 10.000000 120.000000 9.400000 6.900000 7.800000 205.000000 0.137000 0.030000 0.214000 0.239000 0.001000 2076.000000 2355.000000
75% 10.000000 120.000000 10.200000 7.200000 8.300000 216.000000 0.297000 0.042000 0.228000 0.253000 0.001000 2246.000000 2709.000000
max 81.000000 585.000000 41.099998 14.900000 24.500000 572.000000 0.968000 0.510000 1.846000 0.570000 0.023000 2760.000000 3094.000000
In [9]:
df.describe(include=['O'])#description des variables catégorielles
Out[9]:
lib_mrq cod_cbr hybride typ_boite_nb_rapp champ_v9 Carrosserie gamme
count 55044 55044 55044 55044 54983 55044 55044
unique 46 13 2 19 35 11 7
top MERCEDES GO non M 6 "715/2007*692/2008EURO5 MINIBUS MOY-INFER
freq 36220 49311 54655 31799 23979 46107 33438

Traitement des données manquantes (nan)

Il manque des données dans le dataset, ou elles ne sont pas "correctes" (pour diverses raisons). Quoiqu'il en soit, ce sont des éléments que l'on ne peut rentabiliser numériquement. Soit on en fait une estimation par diverses approches ent utilisant la méthode fillna. Ici, nous choisirons de simplement supprimer les lignes (et donc de perdre des données) contenant des valeurs manquantes pour ne pas "changer la réalité" : dans la mesure où chaque véhicule est différent faire une interpolation où propager une valeur d'un véhicule à l'autre ne semble pas approprié.

Avant tout, il est important de noter le nombre de valeurs manquantes, sur le total des valeurs du dataset.

In [10]:
val_manq = {}
val_manq["Valeurs manquantes"] = df.isna().sum().sum()
val_manq["Total de valeurs"] = df.shape[0]*df.shape[1]
vm = pd.DataFrame(val_manq,index=[""]).transpose()
vm
Out[10]:
Valeurs manquantes 58368
Total de valeurs 1100880

D'autre part, il est important d'observer le nombre de valeurs manquantes sur chacune des colonnes du dataframe:

In [11]:
df.isna().sum().plot.bar(figsize=(20,3),title="Répartition du nombre de valeur manquantes sur chaque colonne du dataset",rot=20).set_ylabel("Occurence")
Out[11]:
Text(0, 0.5, 'Occurence')

Il y a 45271 valeurs manquantes sur la colonne 'hc' (les résultats d’essai HC en gramme par km) sur 55044 lignes dans le jeu de données. Autrement dit, si on supprime les lignes contenant les valeurs manquantes, notre jeu de données serait considérablement impacté en termes de pertes de données. Pour éviter ce coup de bélier, on supprime cette colonne du dataset avant de supprimer les lignes contenant des valeurs manquantes

In [12]:
df=df.drop(['hc'],axis=1)
In [13]:
df.dropna(inplace=True)

Le jeu de données étant modifié, il convient d'observer sa nouvelle description : À présent, il n'y a plus de valeurs manquantes :

In [14]:
df.describe()
Out[14]:
puiss_admin_98 puiss_max conso_urb conso_exurb conso_mixte co2 co_typ_1 nox hcnox ptcl masse_ordma_min masse_ordma_max
count 45151.000000 45151.000000 45151.000000 45151.000000 45151.000000 45151.000000 45151.000000 45151.000000 45151.000000 45151.000000 45151.000000 45151.000000
mean 9.656242 110.660030 9.254100 6.661048 7.601309 200.037718 0.173839 0.210301 0.233724 0.000681 2105.325884 2363.365396
std 1.977221 22.987465 1.348869 0.814741 0.984505 26.072342 0.140152 0.035570 0.037426 0.000571 221.172869 356.877491
min 3.000000 40.000000 0.000000 2.800000 1.800000 48.000000 0.005000 0.021000 0.000000 0.000000 845.000000 845.000000
25% 9.000000 100.000000 8.800000 6.500000 7.400000 194.000000 0.046000 0.197000 0.216000 0.000000 2025.000000 2185.000000
50% 9.000000 120.000000 9.400000 6.800000 7.700000 203.000000 0.137000 0.214000 0.239000 0.001000 2076.000000 2355.000000
75% 10.000000 120.000000 10.100000 7.200000 8.200000 216.000000 0.312500 0.226000 0.253000 0.001000 2186.000000 2709.000000
max 47.000000 405.000000 19.100000 9.800000 12.700000 297.000000 0.920000 0.920000 0.570000 0.010000 2680.000000 2859.000000
In [15]:
df.describe(include=['O'])
Out[15]:
lib_mrq cod_cbr hybride typ_boite_nb_rapp champ_v9 Carrosserie gamme
count 45151 45151 45151 45151 45151 45151 45151
unique 36 4 2 11 28 11 7
top MERCEDES GO non M 6 "715/2007*692/2008EURO5 MINIBUS MOY-INFER
freq 29557 45059 45069 28909 22877 40695 28096

À présent, il n'y a plus de valeurs manquantes :

In [16]:
pd.DataFrame(df.isna().sum()).transpose()
Out[16]:
lib_mrq cod_cbr hybride puiss_admin_98 puiss_max typ_boite_nb_rapp conso_urb conso_exurb conso_mixte co2 co_typ_1 nox hcnox ptcl masse_ordma_min masse_ordma_max champ_v9 Carrosserie gamme
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Visualisations

In [17]:
def visu(df,categorielles=False,numeriques=False,horizontal=True):
    if numeriques==True:
        for elt in df.columns:
            if pd.api.types.is_numeric_dtype(df[elt]):
                plt.figure()
                df[elt].plot.hist(bins=50,density=True,
                                  title="Distribution de la variable "+"'"+str(elt)+"'")
                df[elt].plot.density().set_ylabel("Densité de probabilité / Fréquence")
                plt.xlabel("Valeurs de la variable '"+elt+"' "+"("+str(col_def["unité"][col_def["nom-colonne"] == elt].values[0])+")"+"\n *"+str(col_def["légende"][col_def["nom-colonne"] == elt].values[0]))
    if categorielles==True:
        for elt in df.columns:
            if pd.api.types.is_object_dtype(df[elt]):
                if not(horizontal):
                    plt.figure()
                    df[elt].value_counts(sort=True).plot.bar(title="Distribution de la variable "+"'"+str(elt)+"'",log=True,zorder=3).grid()
                else:
                    plt.figure()
                    df[elt].value_counts(sort=True,ascending=True).plot.barh(title="Distribution de la variable "+"'"+str(elt)+"'",log=True,zorder=3).grid()
                plt.xlabel("Occurence (échelle logarithmique)")
visu(df,categorielles=True,numeriques=True,horizontal=False)

Concernant les variables quantitatives, on observe des similarités dans l'allure des distributions des variables 'conso_urb', 'conso_exurb', 'conso_mixte'et 'co2'. De même, il semble y avoir une ressemblance entre les distributions des variables 'nox' et 'hcnox'. Aussi, les distributions il semble y avoir un lien entre les distributions des variables 'puiss_admin_98' et 'puiss_max'. On pourrait faire la conjecture que ces variables sont corrélées. Cette conjecture est infirmée par la valeur des coefficients de corrélation de Pearson de la section Analyse des corrélations.
Par ailleurs, la marque Mercedes semble surreprésentée dans le jeu de données. Observons les distributions des variables pour cette marque:

In [18]:
for elt in df.columns:
    if elt not in ['lib_mrq','cod_cbr','hybride','typ_boite_nb_rapp','champ_v9','Carrosserie','gamme']:
        plt.figure()
        df[df["lib_mrq"]=="MERCEDES"][elt].plot.hist(bins=50,density=True,
                                                     title="Distribution de la variable "+"'"+str(elt)+"' pour la marque Mercedes")
        df[elt].plot.density().set_ylabel("Densité de probabilité / Fréquence")
        plt.xlabel("Valeurs de la variable '"+elt+"' "+"("+str(col_def["unité"][col_def["nom-colonne"] == elt].values[0])+")"+"\n *"+str(col_def["légende"][col_def["nom-colonne"] == elt].values[0]))
for elt in ['cod_cbr','hybride','typ_boite_nb_rapp','champ_v9','Carrosserie','gamme']:
    plt.figure()
    df[df["lib_mrq"]=="MERCEDES"][elt].value_counts().plot.bar(title="Répartition des voitures Mercedes dans les catégories de la variable '"+str(elt)+"'",log=True,zorder=3).grid()

Par comparaison avec les répartitions dans les variables catégorielles dans tout le jeu de donné, on observe qu'il y a des similarités entre la répartition des Mercedes dans ces mêmes variables catégorielles. Or les voitures de la marque Mercedes sont surreprésentées. Le dataset comporte un biais de représentation. Il faudra en tenir compte dans la conception de l'apprentissage automatique.

Analyse des corrélations

In [19]:
df.corr(method="pearson").style.applymap(lambda x: "background-color: red" if round(abs(x),1) >= 0.7 else "background-color: white")
Out[19]:
  puiss_admin_98 puiss_max conso_urb conso_exurb conso_mixte co2 co_typ_1 nox hcnox ptcl masse_ordma_min masse_ordma_max
puiss_admin_98 1.000000 0.937125 0.412298 0.269756 0.354969 0.356238 0.167767 0.160175 0.167941 0.078401 0.282274 0.026057
puiss_max 0.937125 1.000000 0.131890 -0.002239 0.068695 0.070788 0.225618 -0.067491 -0.036451 0.009015 0.089682 -0.133692
conso_urb 0.412298 0.131890 1.000000 0.863855 0.967495 0.969025 -0.264590 0.660239 0.564936 0.094705 0.653388 0.388426
conso_exurb 0.269756 -0.002239 0.863855 1.000000 0.961360 0.959518 -0.076167 0.717272 0.667224 0.241798 0.692294 0.729529
conso_mixte 0.354969 0.068695 0.967495 0.961360 1.000000 0.999558 -0.173859 0.711593 0.635173 0.180187 0.692525 0.572146
co2 0.356238 0.070788 0.969025 0.959518 0.999558 1.000000 -0.181625 0.710881 0.632590 0.173002 0.695548 0.566442
co_typ_1 0.167767 0.225618 -0.264590 -0.076167 -0.173859 -0.181625 1.000000 0.093912 0.346338 0.321322 -0.146982 0.241061
nox 0.160175 -0.067491 0.660239 0.717272 0.711593 0.710881 0.093912 1.000000 0.941735 0.221325 0.507906 0.480695
hcnox 0.167941 -0.036451 0.564936 0.667224 0.635173 0.632590 0.346338 0.941735 1.000000 0.231319 0.456007 0.540351
ptcl 0.078401 0.009015 0.094705 0.241798 0.180187 0.173002 0.321322 0.221325 0.231319 1.000000 0.029437 0.266764
masse_ordma_min 0.282274 0.089682 0.653388 0.692294 0.692525 0.695548 -0.146982 0.507906 0.456007 0.029437 1.000000 0.638995
masse_ordma_max 0.026057 -0.133692 0.388426 0.729529 0.572146 0.566442 0.241061 0.480695 0.540351 0.266764 0.638995 1.000000

La matrice de corrélation nous permet de conclure quant aux potentielles connexions*** entre les variables quantitatives. On observe par exemple qu'il semble y avoir une forte corrélation entre les consommations urbaine, extra urbaine, mixte et les émissions de CO2. De même, il semblerait y avoir un lien entre les résultats d'essais NOx et HC+NOx. Aussi, dans une mesure plus faible, il y aurait corrélation entre es résultats d'essais NOx et les différents types de consommations et les émissions de CO2. Enfin, la masse en ordre de marche mini semblerait relativement "faiblement" corrélée avec les diffénts types de consommations, les émissions de CO2 tandis que la masse en ordre de marche maxi serait liée à la consommation extra urbaine.

L'analyse des corrélations pourrait présenter un intérêt par la suite, par exemple pour diminuer le nombre de variables, si nécessaire (par exemple pour rendre le jeu de données moins complexe), en perdant le moins d'information possible.

***Dans l'hypothèse où l'on considérerait que la corrélation (calculée statistiquement) serait significative si le coefficient de Pearson est supérieur ou égal à 0.7 en valeur absolue (la corrélation pourrait être "significative" pour des valeurs absolues plus faibles mais nous ne ferons pas d'hypothèse sur celles-ci)

En guise de résumé graphique, nous pouvons observer les nuages de points résultant du tracé des données d'une colonne en fonction de celles d'une autre colonne du dataset. C'est une façon d'apprécier visuellement le potentiel lien entre deux types de données quantitatives.

Tracés des relations par paires

In [20]:
import matplotlib as mpl
mpl.rcParams["axes.labelsize"] = 18
g = sns.PairGrid(df)
g.map_diag(sns.histplot)
g.map_offdiag(sns.scatterplot)
g.add_legend()
Out[20]:
<seaborn.axisgrid.PairGrid at 0x15b5da355b0>
Remarque : Il semble y avoir un lien entre les masses en ordre de marche mini et maxi que l'on ne constate pas dans la matrice de corrélation (coefficient de pearson de l'ordre de 0.64). Cela pourrait s'expliquer par l'ensemble de points qui n'est pas sur la "diagonale" apparente, formée par les autres points du graphique. Ces derniers étant alignés horizontalement/verticalement (signe de l'indépendance de deux variables) seraient peut-être la cause d'un coefficient de pearson relativement plus faible rendant plus difficile la conclusion quant à la corrélation des variables.

Machine learning

On cherche à établir un lien entre les caractéristiques des véhicules et leurs émissions de CO2. On va donc dans les parties qui vont suivre, tester des approches machine learning (régression multilinéaire, réseaux de neurones) pour essayer d'établir ce lien. Une analyse de la performance de ces approches concluera cette étude

Préparation des données

On va préparer les données (i.e définir les données d'entrées et de sortie de notre modèle)

Encodage des variables qualitatives

On fait le choix d'utiliser un encodage one hot : chaque catégorie devient une colonne du tableau et si un véhicule appartient à celle-ci, la valeur 1 est insérée dans la cellule de cette colonne, et 0 sinon. Cela a pour effet d'augmenter le nombre de colonnes du tableau

In [21]:
df_enc = df.copy()
df_enc=pd.get_dummies(df_enc, columns=["lib_mrq","cod_cbr","hybride","typ_boite_nb_rapp","champ_v9","Carrosserie","gamme"])
In [22]:
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(df_enc.drop(['co2','co_typ_1','nox','hcnox','ptcl'],axis=1), df_enc[['co2','co_typ_1','nox','hcnox','ptcl']], train_size=0.8, random_state=42) 

Modèles linéaires

Dans un premier temps, on propose d'utiliser un modèle linéaire multivarié. On fait l'hypothèse que chaque variable explicative contribue linéairement à la valeur des variables à expliquer : les émissions de CO2(co2), de monoxyde de carbone(co_typ_1) d'hydrocarbures imbrûlés(hc), de NOx et de particules (ptcl); toutes en grammes par kilomètres.

In [23]:
import statsmodels.api as sm
from sklearn.model_selection import train_test_split

# On définit un modèle linéaire par variable à expliquer. Une classe est définie à cette fin.
 
class multi_lm:
    def __init__(self,dependent,independent,data_encoded,train_size=0.8): #Attention à encoder les variables catégorielles
        self.dependent = dependent #liste des noms des colonnes des variables à expliquer
        self.independent = independent #liste des noms des colonnes des variables explicatives
        self.df = data_encoded
        self.train_size = train_size
        self.X_train,self.X_test,self.y_train,self.y_test = self.build_sets() 
        self.anovas = self.build_anovas() #liste de modèles linéaires
        self.shape_tot = self.df.shape
        self.r2 = self.r2()
                
    def build_sets(self): #Subdivision du dataset en données d'entraînement, test et validation
        X_train, X_test, y_train, y_test = train_test_split(self.df.drop(self.dependent,axis=1), self.df[self.dependent], train_size=self.train_size, random_state=42)
        X_train = sm.add_constant(X_train)
        X_test = sm.add_constant(X_test)
        return X_train, X_test, y_train, y_test
    
    def build_anovas(self): #Construction des modèles linéaires
        l = []
        for elt in self.dependent:
            l.append(sm.OLS(self.y_train[[elt]], self.X_train).fit())
        return l
        
    def predict(self,x): # Prédiction sur un jeu de données nouveau (ou non)
        l = []
        x = sm.add_constant(x)
        for elt in self.anovas:
            l.append(elt.predict(x))
        return pd.DataFrame(l,index=self.y_train.columns).transpose()
    
    def resumes(self): #Résumés
        print("Résumés des modèles linéaires \n")
        for elt in self.anovas:
            print("\n")
            print(elt.summary())
            print("\n")
            
    def r2(self):
        keys = self.y_train.columns
        dico = {}
        for elt,key in list(zip(self.anovas,keys)):
            dico[key] = elt.rsquared
            
        return pd.DataFrame(dico,index=[r'$R^2$'])
    
    def coefs(self): #coefficients des variables explicatives
        keys = self.y_train.columns
        dico = {}
        for elt,key in list(zip(self.anovas,keys)):
            dico[key] = elt.params
            
        return pd.DataFrame(dico)
    
    def pvals(self):
        keys = self.y_train.columns
        dico = {}
        for elt,key in list(zip(self.anovas,keys)):
            dico[key] = elt.pvalues
            
        return pd.DataFrame(dico)
    
    def evaluate(self):
        Y = self.predict(self.X_test)
        YY = (Y - Y.mean()) / Y.std()
        
        y = self.y_test
        yy = (y - y.mean())/y.std()
        
        return pd.DataFrame((((YY - yy)**2).mean()),columns=["mse"]).transpose()
C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\base\tsa_model.py:7: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
  from pandas import (to_datetime, Int64Index, DatetimeIndex, Period,
C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\base\tsa_model.py:7: FutureWarning: pandas.Float64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead.
  from pandas import (to_datetime, Int64Index, DatetimeIndex, Period,
In [24]:
multi_model = multi_lm(train_size=0.99,dependent=['co2','co_typ_1','nox','hcnox','ptcl'],independent=list(set(list(df_enc.columns)).difference(list(['co2','co_typ_1','nox','hcnox','ptcl']))),data_encoded=df_enc)

multi_model.resumes()
C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\tsatools.py:130: FutureWarning: In a future version of pandas all arguments of concat except for the argument 'objs' will be keyword-only.
  x = pd.concat(x[::order], 1)
C:\ProgramData\Anaconda3\lib\site-packages\statsmodels\tsa\tsatools.py:130: FutureWarning: In a future version of pandas all arguments of concat except for the argument 'objs' will be keyword-only.
  x = pd.concat(x[::order], 1)
Résumés des modèles linéaires 



                            OLS Regression Results                            
==============================================================================
Dep. Variable:                    co2   R-squared:                       0.999
Model:                            OLS   Adj. R-squared:                  0.999
Method:                 Least Squares   F-statistic:                 8.877e+05
Date:                Sat, 09 Jul 2022   Prob (F-statistic):               0.00
Time:                        16:58:25   Log-Likelihood:                -39861.
No. Observations:               44699   AIC:                         7.992e+04
Df Residuals:                   44600   BIC:                         8.078e+04
Df Model:                          98                                         
Covariance Type:            nonrobust                                         
====================================================================================================
                                       coef    std err          t      P>|t|      [0.025      0.975]
----------------------------------------------------------------------------------------------------
const                               -3.2934      0.097    -33.813      0.000      -3.484      -3.102
puiss_admin_98                      -0.2703      0.008    -33.233      0.000      -0.286      -0.254
puiss_max                            0.0215      0.001     33.489      0.000       0.020       0.023
conso_urb                            1.6352      0.037     43.816      0.000       1.562       1.708
conso_exurb                          2.6825      0.060     44.526      0.000       2.564       2.801
conso_mixte                         22.0446      0.092    239.188      0.000      21.864      22.225
masse_ordma_min                      0.0002   3.36e-05      5.748      0.000       0.000       0.000
masse_ordma_max                      0.0002    3.2e-05      6.183      0.000       0.000       0.000
lib_mrq_ALFA-ROMEO                  -0.7521      0.094     -8.030      0.000      -0.936      -0.568
lib_mrq_AUDI                         0.0873      0.103      0.851      0.395      -0.114       0.288
lib_mrq_BMW                          0.6200      0.106      5.849      0.000       0.412       0.828
lib_mrq_CHEVROLET                    1.0037      0.112      8.962      0.000       0.784       1.223
lib_mrq_CITROEN                     -0.2284      0.095     -2.409      0.016      -0.414      -0.043
lib_mrq_DACIA                       -0.4457      0.163     -2.731      0.006      -0.766      -0.126
lib_mrq_FIAT                        -0.8498      0.067    -12.641      0.000      -0.982      -0.718
lib_mrq_FORD                         0.2857      0.102      2.810      0.005       0.086       0.485
lib_mrq_HONDA                        0.3565      0.152      2.352      0.019       0.059       0.654
lib_mrq_HYUNDAI                      0.2208      0.110      2.015      0.044       0.006       0.436
lib_mrq_INFINITI                    -0.6120      0.225     -2.719      0.007      -1.053      -0.171
lib_mrq_JAGUAR                      -0.0340      0.185     -0.184      0.854      -0.396       0.328
lib_mrq_JEEP                        -0.8319      0.110     -7.583      0.000      -1.047      -0.617
lib_mrq_KIA                          0.2874      0.105      2.751      0.006       0.083       0.492
lib_mrq_LANCIA                      -0.8688      0.131     -6.623      0.000      -1.126      -0.612
lib_mrq_LAND ROVER                   0.4872      0.133      3.657      0.000       0.226       0.748
lib_mrq_LEXUS                       -0.8707      0.176     -4.935      0.000      -1.216      -0.525
lib_mrq_MASERATI                     0.9051      0.248      3.645      0.000       0.418       1.392
lib_mrq_MAZDA                        0.6242      0.241      2.591      0.010       0.152       1.096
lib_mrq_MERCEDES                     0.0228      0.094      0.243      0.808      -0.161       0.207
lib_mrq_MINI                         0.4249      0.109      3.887      0.000       0.211       0.639
lib_mrq_MITSUBISHI                   0.0431      0.140      0.309      0.757      -0.231       0.317
lib_mrq_NISSAN                       0.2515      0.103      2.430      0.015       0.049       0.454
lib_mrq_OPEL                         0.9174      0.112      8.186      0.000       0.698       1.137
lib_mrq_PEUGEOT                     -0.6051      0.072     -8.366      0.000      -0.747      -0.463
lib_mrq_PORSCHE                      0.0573      0.177      0.324      0.746      -0.289       0.404
lib_mrq_RENAULT                     -1.0181      0.073    -13.863      0.000      -1.162      -0.874
lib_mrq_SEAT                        -0.5519      0.091     -6.069      0.000      -0.730      -0.374
lib_mrq_SKODA                       -0.6454      0.089     -7.269      0.000      -0.819      -0.471
lib_mrq_SMART                       -0.1630      0.326     -0.501      0.617      -0.801       0.475
lib_mrq_SSANGYONG                   -1.4611      0.244     -5.988      0.000      -1.939      -0.983
lib_mrq_SUBARU                       0.2437      0.203      1.198      0.231      -0.155       0.642
lib_mrq_SUZUKI                      -0.5203      0.193     -2.695      0.007      -0.899      -0.142
lib_mrq_TOYOTA                       0.0631      0.089      0.709      0.478      -0.111       0.238
lib_mrq_VOLKSWAGEN                   0.2356      0.096      2.442      0.015       0.047       0.425
lib_mrq_VOLVO                        0.0273      0.087      0.313      0.754      -0.143       0.198
cod_cbr_ES                         -10.9306      0.123    -88.566      0.000     -11.173     -10.689
cod_cbr_GH                           3.4992      0.252     13.876      0.000       3.005       3.993
cod_cbr_GL                          -3.1572      0.395     -7.999      0.000      -3.931      -2.384
cod_cbr_GO                           7.2953      0.083     88.022      0.000       7.133       7.458
hybride_non                         -3.6353      0.087    -41.625      0.000      -3.807      -3.464
hybride_oui                          0.3420      0.150      2.273      0.023       0.047       0.637
typ_boite_nb_rapp_A 5               -0.3980      0.063     -6.340      0.000      -0.521      -0.275
typ_boite_nb_rapp_A 6               -0.6095      0.068     -8.992      0.000      -0.742      -0.477
typ_boite_nb_rapp_A 7               -0.5071      0.064     -7.980      0.000      -0.632      -0.383
typ_boite_nb_rapp_A 8               -0.2660      0.083     -3.191      0.001      -0.429      -0.103
typ_boite_nb_rapp_A 9               -0.6324      0.117     -5.395      0.000      -0.862      -0.403
typ_boite_nb_rapp_D 5                0.2387      0.164      1.458      0.145      -0.082       0.559
typ_boite_nb_rapp_D 6                0.6024      0.240      2.507      0.012       0.131       1.073
typ_boite_nb_rapp_M 5               -0.2455      0.069     -3.565      0.000      -0.381      -0.111
typ_boite_nb_rapp_M 6               -0.6825      0.062    -11.028      0.000      -0.804      -0.561
typ_boite_nb_rapp_S 6               -0.8157      0.549     -1.486      0.137      -1.892       0.260
typ_boite_nb_rapp_V 0                0.0221      0.123      0.179      0.858      -0.220       0.264
champ_v9_"715/2007*143/2013EURO5    -0.8495      0.155     -5.485      0.000      -1.153      -0.546
champ_v9_"715/2007*143/2013EURO6    -1.0493      0.111     -9.471      0.000      -1.266      -0.832
champ_v9_"715/2007*195/2013EURO5    -0.9139      0.072    -12.695      0.000      -1.055      -0.773
champ_v9_"715/2007*195/2013EURO6    -0.6953      0.076     -9.191      0.000      -0.844      -0.547
champ_v9_"715/2007*459/2012EURO5    -0.3804      0.096     -3.966      0.000      -0.568      -0.192
champ_v9_"715/2007*459/2012EURO6     0.1911      0.273      0.701      0.484      -0.344       0.726
champ_v9_"715/2007*566/2011EURO5     0.1223      0.078      1.560      0.119      -0.031       0.276
champ_v9_"715/2007*566/2011EURO6    -0.7255      0.148     -4.901      0.000      -1.016      -0.435
champ_v9_"715/2007*630/2012EURO5    -0.5866      0.074     -7.959      0.000      -0.731      -0.442
champ_v9_"715/2007*630/2012EURO6    -0.7185      0.092     -7.842      0.000      -0.898      -0.539
champ_v9_"715/2007*692/2008EURO5     0.0620      0.079      0.789      0.430      -0.092       0.216
champ_v9_715/20                      1.3500      0.422      3.202      0.001       0.524       2.176
champ_v9_715/2007*                   0.2734      0.422      0.648      0.517      -0.553       1.100
champ_v9_715/2007*1                  0.0707      0.340      0.208      0.835      -0.596       0.737
champ_v9_715/2007*143/2013EURO5      1.2774      0.286      4.474      0.000       0.718       1.837
champ_v9_715/2007*195/20            -1.3215      0.306     -4.314      0.000      -1.922      -0.721
champ_v9_715/2007*195/2013           0.2800      0.583      0.480      0.631      -0.863       1.423
champ_v9_715/2007*195/2013EUR        0.2368      0.574      0.412      0.680      -0.889       1.363
champ_v9_715/2007*195/2013EURO5     -0.0550      0.103     -0.536      0.592      -0.256       0.146
champ_v9_715/2007*195/2013EURO6     -0.4082      0.131     -3.117      0.002      -0.665      -0.152
champ_v9_715/2007*459/2012EU         0.2329      0.575      0.405      0.685      -0.893       1.359
champ_v9_715/2007*459/2012EURO       0.2540      0.410      0.620      0.535      -0.549       1.057
champ_v9_715/2007*459/2012EURO5     -0.5826      0.190     -3.062      0.002      -0.956      -0.210
champ_v9_715/2007*566/2011EURO5     -0.2375      0.113     -2.108      0.035      -0.458      -0.017
champ_v9_715/2007*630/2012EURO       1.3808      0.257      5.377      0.000       0.877       1.884
champ_v9_715/2007*630/2012EURO5     -0.2292      0.104     -2.195      0.028      -0.434      -0.025
champ_v9_715/2007*630/2012EURO6     -0.6614      0.297     -2.225      0.026      -1.244      -0.079
champ_v9_715/2007*692/2008EURO5      0.3896      0.114      3.412      0.001       0.166       0.613
Carrosserie_BERLINE                 -0.3883      0.038    -10.254      0.000      -0.463      -0.314
Carrosserie_BREAK                   -0.2668      0.041     -6.456      0.000      -0.348      -0.186
Carrosserie_CABRIOLET               -0.7323      0.057    -12.796      0.000      -0.844      -0.620
Carrosserie_COMBISPACE               0.1424      0.067      2.117      0.034       0.011       0.274
Carrosserie_COMBISPCACE             -0.2232      0.316     -0.705      0.481      -0.843       0.397
Carrosserie_COUPE                   -0.0935      0.054     -1.720      0.085      -0.200       0.013
Carrosserie_MINIBUS                 -0.1626      0.049     -3.300      0.001      -0.259      -0.066
Carrosserie_MINISPACE               -0.3103      0.098     -3.159      0.002      -0.503      -0.118
Carrosserie_MONOSPACE               -0.2575      0.093     -2.771      0.006      -0.440      -0.075
Carrosserie_MONOSPACE COMPACT       -0.4444      0.054     -8.167      0.000      -0.551      -0.338
Carrosserie_TS TERRAINS/CHEMINS     -0.5568      0.045    -12.334      0.000      -0.645      -0.468
gamme_ECONOMIQUE                    -0.1243      0.123     -1.014      0.311      -0.365       0.116
gamme_INFERIEURE                    -0.6548      0.046    -14.214      0.000      -0.745      -0.565
gamme_LUXE                          -0.5560      0.040    -14.009      0.000      -0.634      -0.478
gamme_MOY-INFER                     -0.5612      0.031    -18.075      0.000      -0.622      -0.500
gamme_MOY-INFERIEURE                -0.4325      0.086     -5.006      0.000      -0.602      -0.263
gamme_MOY-SUPER                     -0.6081      0.031    -19.354      0.000      -0.670      -0.546
gamme_SUPERIEURE                    -0.3565      0.040     -8.807      0.000      -0.436      -0.277
==============================================================================
Omnibus:                    12266.223   Durbin-Watson:                   2.007
Prob(Omnibus):                  0.000   Jarque-Bera (JB):           503822.168
Skew:                          -0.599   Prob(JB):                         0.00
Kurtosis:                      19.404   Cond. No.                     2.64e+17
==============================================================================

Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The smallest eigenvalue is 6.5e-24. This might indicate that there are
strong multicollinearity problems or that the design matrix is singular.




                            OLS Regression Results                            
==============================================================================
Dep. Variable:               co_typ_1   R-squared:                       0.631
Model:                            OLS   Adj. R-squared:                  0.630
Method:                 Least Squares   F-statistic:                     777.7
Date:                Sat, 09 Jul 2022   Prob (F-statistic):               0.00
Time:                        16:58:25   Log-Likelihood:                 46667.
No. Observations:               44699   AIC:                        -9.314e+04
Df Residuals:                   44600   BIC:                        -9.227e+04
Df Model:                          98                                         
Covariance Type:            nonrobust                                         
====================================================================================================
                                       coef    std err          t      P>|t|      [0.025      0.975]
----------------------------------------------------------------------------------------------------
const                                0.0452      0.014      3.215      0.001       0.018       0.073
puiss_admin_98                       0.0570      0.001     48.570      0.000       0.055       0.059
puiss_max                           -0.0010   9.28e-05    -10.546      0.000      -0.001      -0.001
conso_urb                           -0.1265      0.005    -23.486      0.000      -0.137      -0.116
conso_exurb                         -0.0659      0.009     -7.579      0.000      -0.083      -0.049
conso_mixte                          0.1126      0.013      8.463      0.000       0.086       0.139
masse_ordma_min                  -1.427e-05   4.85e-06     -2.944      0.003   -2.38e-05   -4.77e-06
masse_ordma_max                   2.236e-05   4.61e-06      4.847      0.000    1.33e-05    3.14e-05
lib_mrq_ALFA-ROMEO                   0.0478      0.014      3.538      0.000       0.021       0.074
lib_mrq_AUDI                        -0.1127      0.015     -7.615      0.000      -0.142      -0.084
lib_mrq_BMW                         -0.0612      0.015     -4.002      0.000      -0.091      -0.031
lib_mrq_CHEVROLET                    0.0165      0.016      1.019      0.308      -0.015       0.048
lib_mrq_CITROEN                      0.0121      0.014      0.883      0.377      -0.015       0.039
lib_mrq_DACIA                       -0.0503      0.024     -2.135      0.033      -0.096      -0.004
lib_mrq_FIAT                         0.1365      0.010     14.066      0.000       0.117       0.155
lib_mrq_FORD                         0.1044      0.015      7.114      0.000       0.076       0.133
lib_mrq_HONDA                       -0.1163      0.022     -5.316      0.000      -0.159      -0.073
lib_mrq_HYUNDAI                     -0.0306      0.016     -1.936      0.053      -0.062       0.000
lib_mrq_INFINITI                     0.0314      0.032      0.967      0.334      -0.032       0.095
lib_mrq_JAGUAR                      -0.0696      0.027     -2.613      0.009      -0.122      -0.017
lib_mrq_JEEP                        -0.0943      0.016     -5.957      0.000      -0.125      -0.063
lib_mrq_KIA                         -0.0050      0.015     -0.331      0.741      -0.035       0.025
lib_mrq_LANCIA                       0.1303      0.019      6.883      0.000       0.093       0.167
lib_mrq_LAND ROVER                  -0.0781      0.019     -4.062      0.000      -0.116      -0.040
lib_mrq_LEXUS                       -0.0900      0.025     -3.536      0.000      -0.140      -0.040
lib_mrq_MASERATI                     0.0114      0.036      0.319      0.750      -0.059       0.082
lib_mrq_MAZDA                        0.0453      0.035      1.302      0.193      -0.023       0.113
lib_mrq_MERCEDES                    -0.0068      0.014     -0.504      0.614      -0.033       0.020
lib_mrq_MINI                         0.0047      0.016      0.297      0.767      -0.026       0.036
lib_mrq_MITSUBISHI                  -0.0283      0.020     -1.403      0.161      -0.068       0.011
lib_mrq_NISSAN                       0.0645      0.015      4.317      0.000       0.035       0.094
lib_mrq_OPEL                        -0.0446      0.016     -2.758      0.006      -0.076      -0.013
lib_mrq_PEUGEOT                      0.0802      0.010      7.685      0.000       0.060       0.101
lib_mrq_PORSCHE                     -0.0905      0.025     -3.551      0.000      -0.141      -0.041
lib_mrq_RENAULT                      0.0182      0.011      1.721      0.085      -0.003       0.039
lib_mrq_SEAT                         0.0146      0.013      1.112      0.266      -0.011       0.040
lib_mrq_SKODA                        0.0136      0.013      1.063      0.288      -0.011       0.039
lib_mrq_SMART                       -0.1167      0.047     -2.483      0.013      -0.209      -0.025
lib_mrq_SSANGYONG                    0.1015      0.035      2.882      0.004       0.032       0.171
lib_mrq_SUBARU                       0.0796      0.029      2.711      0.007       0.022       0.137
lib_mrq_SUZUKI                       0.1290      0.028      4.629      0.000       0.074       0.184
lib_mrq_TOYOTA                      -0.0174      0.013     -1.353      0.176      -0.043       0.008
lib_mrq_VOLKSWAGEN                   0.0178      0.014      1.281      0.200      -0.009       0.045
lib_mrq_VOLVO                       -0.0016      0.013     -0.126      0.900      -0.026       0.023
cod_cbr_ES                           0.0584      0.018      3.281      0.001       0.024       0.093
cod_cbr_GH                           0.1682      0.036      4.621      0.000       0.097       0.239
cod_cbr_GL                          -0.2585      0.057     -4.538      0.000      -0.370      -0.147
cod_cbr_GO                           0.0770      0.012      6.442      0.000       0.054       0.100
hybride_non                          0.1355      0.013     10.750      0.000       0.111       0.160
hybride_oui                         -0.0903      0.022     -4.160      0.000      -0.133      -0.048
typ_boite_nb_rapp_A 5                0.1419      0.009     15.662      0.000       0.124       0.160
typ_boite_nb_rapp_A 6                0.0144      0.010      1.472      0.141      -0.005       0.034
typ_boite_nb_rapp_A 7               -0.0960      0.009    -10.467      0.000      -0.114      -0.078
typ_boite_nb_rapp_A 8               -0.1586      0.012    -13.188      0.000      -0.182      -0.135
typ_boite_nb_rapp_A 9               -0.0975      0.017     -5.762      0.000      -0.131      -0.064
typ_boite_nb_rapp_D 5               -0.1059      0.024     -4.482      0.000      -0.152      -0.060
typ_boite_nb_rapp_D 6               -0.1224      0.035     -3.528      0.000      -0.190      -0.054
typ_boite_nb_rapp_M 5                0.0442      0.010      4.447      0.000       0.025       0.064
typ_boite_nb_rapp_M 6                0.0826      0.009      9.253      0.000       0.065       0.100
typ_boite_nb_rapp_S 6                0.3966      0.079      5.006      0.000       0.241       0.552
typ_boite_nb_rapp_V 0               -0.0542      0.018     -3.046      0.002      -0.089      -0.019
champ_v9_"715/2007*143/2013EURO5     0.0894      0.022      4.001      0.000       0.046       0.133
champ_v9_"715/2007*143/2013EURO6     0.0375      0.016      2.345      0.019       0.006       0.069
champ_v9_"715/2007*195/2013EURO5     0.0825      0.010      7.936      0.000       0.062       0.103
champ_v9_"715/2007*195/2013EURO6     0.0991      0.011      9.079      0.000       0.078       0.121
champ_v9_"715/2007*459/2012EURO5     0.0724      0.014      5.232      0.000       0.045       0.100
champ_v9_"715/2007*459/2012EURO6    -0.0470      0.039     -1.194      0.233      -0.124       0.030
champ_v9_"715/2007*566/2011EURO5     0.1634      0.011     14.439      0.000       0.141       0.186
champ_v9_"715/2007*566/2011EURO6     0.0066      0.021      0.308      0.758      -0.035       0.048
champ_v9_"715/2007*630/2012EURO5     0.1450      0.011     13.638      0.000       0.124       0.166
champ_v9_"715/2007*630/2012EURO6     0.0530      0.013      4.012      0.000       0.027       0.079
champ_v9_"715/2007*692/2008EURO5    -0.0655      0.011     -5.773      0.000      -0.088      -0.043
champ_v9_715/20                      0.0509      0.061      0.837      0.402      -0.068       0.170
champ_v9_715/2007*                  -0.3420      0.061     -5.617      0.000      -0.461      -0.223
champ_v9_715/2007*1                 -0.1866      0.049     -3.802      0.000      -0.283      -0.090
champ_v9_715/2007*143/2013EURO5      0.0152      0.041      0.369      0.712      -0.066       0.096
champ_v9_715/2007*195/20             0.1431      0.044      3.238      0.001       0.056       0.230
champ_v9_715/2007*195/2013          -0.3418      0.084     -4.060      0.000      -0.507      -0.177
champ_v9_715/2007*195/2013EUR       -0.0822      0.083     -0.991      0.322      -0.245       0.080
champ_v9_715/2007*195/2013EURO5      0.0623      0.015      4.202      0.000       0.033       0.091
champ_v9_715/2007*195/2013EURO6     -0.0485      0.019     -2.566      0.010      -0.086      -0.011
champ_v9_715/2007*459/2012EU        -0.0326      0.083     -0.393      0.694      -0.195       0.130
champ_v9_715/2007*459/2012EURO      -0.0322      0.059     -0.544      0.586      -0.148       0.084
champ_v9_715/2007*459/2012EURO5      0.0904      0.027      3.294      0.001       0.037       0.144
champ_v9_715/2007*566/2011EURO5      0.0781      0.016      4.805      0.000       0.046       0.110
champ_v9_715/2007*630/2012EURO       0.0084      0.037      0.228      0.820      -0.064       0.081
champ_v9_715/2007*630/2012EURO5      0.0563      0.015      3.737      0.000       0.027       0.086
champ_v9_715/2007*630/2012EURO6     -0.0800      0.043     -1.865      0.062      -0.164       0.004
champ_v9_715/2007*692/2008EURO5      0.0497      0.016      3.015      0.003       0.017       0.082
Carrosserie_BERLINE                 -0.0070      0.005     -1.289      0.197      -0.018       0.004
Carrosserie_BREAK                   -0.0241      0.006     -4.041      0.000      -0.036      -0.012
Carrosserie_CABRIOLET               -0.0619      0.008     -7.492      0.000      -0.078      -0.046
Carrosserie_COMBISPACE               0.0068      0.010      0.702      0.482      -0.012       0.026
Carrosserie_COMBISPCACE              0.1280      0.046      2.804      0.005       0.039       0.218
Carrosserie_COUPE                   -0.0805      0.008    -10.261      0.000      -0.096      -0.065
Carrosserie_MINIBUS                  0.1170      0.007     16.444      0.000       0.103       0.131
Carrosserie_MINISPACE               -0.0790      0.014     -5.569      0.000      -0.107      -0.051
Carrosserie_MONOSPACE                0.0038      0.013      0.284      0.777      -0.022       0.030
Carrosserie_MONOSPACE COMPACT        0.0251      0.008      3.197      0.001       0.010       0.040
Carrosserie_TS TERRAINS/CHEMINS      0.0169      0.007      2.594      0.009       0.004       0.030
gamme_ECONOMIQUE                     0.0771      0.018      4.354      0.000       0.042       0.112
gamme_INFERIEURE                     0.0284      0.007      4.277      0.000       0.015       0.041
gamme_LUXE                          -0.0142      0.006     -2.477      0.013      -0.025      -0.003
gamme_MOY-INFER                      0.0108      0.004      2.416      0.016       0.002       0.020
gamme_MOY-INFERIEURE                -0.0258      0.012     -2.067      0.039      -0.050      -0.001
gamme_MOY-SUPER                     -0.0043      0.005     -0.952      0.341      -0.013       0.005
gamme_SUPERIEURE                    -0.0268      0.006     -4.596      0.000      -0.038      -0.015
==============================================================================
Omnibus:                     1224.356   Durbin-Watson:                   1.983
Prob(Omnibus):                  0.000   Jarque-Bera (JB):             1676.628
Skew:                           0.312   Prob(JB):                         0.00
Kurtosis:                       3.714   Cond. No.                     2.64e+17
==============================================================================

Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The smallest eigenvalue is 6.5e-24. This might indicate that there are
strong multicollinearity problems or that the design matrix is singular.




                            OLS Regression Results                            
==============================================================================
Dep. Variable:                    nox   R-squared:                       0.815
Model:                            OLS   Adj. R-squared:                  0.814
Method:                 Least Squares   F-statistic:                     1998.
Date:                Sat, 09 Jul 2022   Prob (F-statistic):               0.00
Time:                        16:58:25   Log-Likelihood:             1.2333e+05
No. Observations:               44699   AIC:                        -2.465e+05
Df Residuals:                   44600   BIC:                        -2.456e+05
Df Model:                          98                                         
Covariance Type:            nonrobust                                         
====================================================================================================
                                       coef    std err          t      P>|t|      [0.025      0.975]
----------------------------------------------------------------------------------------------------
const                                0.0444      0.003     17.556      0.000       0.039       0.049
puiss_admin_98                       0.0138      0.000     65.111      0.000       0.013       0.014
puiss_max                           -0.0008   1.67e-05    -50.347      0.000      -0.001      -0.001
conso_urb                           -0.0161      0.001    -16.570      0.000      -0.018      -0.014
conso_exurb                         -0.0180      0.002    -11.476      0.000      -0.021      -0.015
conso_mixte                          0.0329      0.002     13.742      0.000       0.028       0.038
masse_ordma_min                  -5.397e-06   8.72e-07     -6.189      0.000   -7.11e-06   -3.69e-06
masse_ordma_max                  -1.461e-06    8.3e-07     -1.759      0.079   -3.09e-06    1.67e-07
lib_mrq_ALFA-ROMEO                   0.0155      0.002      6.371      0.000       0.011       0.020
lib_mrq_AUDI                         0.0151      0.003      5.672      0.000       0.010       0.020
lib_mrq_BMW                          0.0124      0.003      4.491      0.000       0.007       0.018
lib_mrq_CHEVROLET                   -0.0083      0.003     -2.853      0.004      -0.014      -0.003
lib_mrq_CITROEN                      0.0170      0.002      6.900      0.000       0.012       0.022
lib_mrq_DACIA                       -0.0010      0.004     -0.243      0.808      -0.009       0.007
lib_mrq_FIAT                         0.0110      0.002      6.285      0.000       0.008       0.014
lib_mrq_FORD                         0.0298      0.003     11.265      0.000       0.025       0.035
lib_mrq_HONDA                       -0.0109      0.004     -2.770      0.006      -0.019      -0.003
lib_mrq_HYUNDAI                     -0.0104      0.003     -3.657      0.000      -0.016      -0.005
lib_mrq_INFINITI                    -0.0385      0.006     -6.593      0.000      -0.050      -0.027
lib_mrq_JAGUAR                      -0.0023      0.005     -0.490      0.624      -0.012       0.007
lib_mrq_JEEP                        -0.0212      0.003     -7.429      0.000      -0.027      -0.016
lib_mrq_KIA                         -0.0195      0.003     -7.198      0.000      -0.025      -0.014
lib_mrq_LANCIA                       0.0212      0.003      6.212      0.000       0.014       0.028
lib_mrq_LAND ROVER                   0.0011      0.003      0.322      0.748      -0.006       0.008
lib_mrq_LEXUS                        0.0110      0.005      2.392      0.017       0.002       0.020
lib_mrq_MASERATI                    -0.0191      0.006     -2.955      0.003      -0.032      -0.006
lib_mrq_MAZDA                        0.0127      0.006      2.034      0.042       0.000       0.025
lib_mrq_MERCEDES                     0.0123      0.002      5.018      0.000       0.007       0.017
lib_mrq_MINI                         0.0028      0.003      0.988      0.323      -0.003       0.008
lib_mrq_MITSUBISHI                   0.0203      0.004      5.607      0.000       0.013       0.027
lib_mrq_NISSAN                       0.0097      0.003      3.594      0.000       0.004       0.015
lib_mrq_OPEL                         0.0141      0.003      4.856      0.000       0.008       0.020
lib_mrq_PEUGEOT                     -0.0019      0.002     -1.034      0.301      -0.006       0.002
lib_mrq_PORSCHE                     -0.0475      0.005    -10.349      0.000      -0.056      -0.038
lib_mrq_RENAULT                     -0.0108      0.002     -5.662      0.000      -0.015      -0.007
lib_mrq_SEAT                        -0.0151      0.002     -6.385      0.000      -0.020      -0.010
lib_mrq_SKODA                       -0.0087      0.002     -3.765      0.000      -0.013      -0.004
lib_mrq_SMART                        0.0055      0.008      0.653      0.514      -0.011       0.022
lib_mrq_SSANGYONG                    0.0423      0.006      6.674      0.000       0.030       0.055
lib_mrq_SUBARU                       0.0040      0.005      0.749      0.454      -0.006       0.014
lib_mrq_SUZUKI                       0.0219      0.005      4.363      0.000       0.012       0.032
lib_mrq_TOYOTA                      -0.0135      0.002     -5.863      0.000      -0.018      -0.009
lib_mrq_VOLKSWAGEN                   0.0059      0.003      2.339      0.019       0.001       0.011
lib_mrq_VOLVO                       -0.0121      0.002     -5.366      0.000      -0.017      -0.008
cod_cbr_ES                          -0.0194      0.003     -6.039      0.000      -0.026      -0.013
cod_cbr_GH                           0.0345      0.007      5.268      0.000       0.022       0.047
cod_cbr_GL                          -0.0110      0.010     -1.076      0.282      -0.031       0.009
cod_cbr_GO                           0.0403      0.002     18.720      0.000       0.036       0.045
hybride_non                          0.0209      0.002      9.231      0.000       0.016       0.025
hybride_oui                          0.0235      0.004      6.009      0.000       0.016       0.031
typ_boite_nb_rapp_A 5                0.0051      0.002      3.119      0.002       0.002       0.008
typ_boite_nb_rapp_A 6             3.246e-05      0.002      0.018      0.985      -0.003       0.003
typ_boite_nb_rapp_A 7                0.0240      0.002     14.521      0.000       0.021       0.027
typ_boite_nb_rapp_A 8               -0.0118      0.002     -5.433      0.000      -0.016      -0.008
typ_boite_nb_rapp_A 9                0.0206      0.003      6.772      0.000       0.015       0.027
typ_boite_nb_rapp_D 5               -0.0127      0.004     -2.996      0.003      -0.021      -0.004
typ_boite_nb_rapp_D 6               -0.0215      0.006     -3.448      0.001      -0.034      -0.009
typ_boite_nb_rapp_M 5               -0.0021      0.002     -1.198      0.231      -0.006       0.001
typ_boite_nb_rapp_M 6                0.0022      0.002      1.339      0.181      -0.001       0.005
typ_boite_nb_rapp_S 6                0.0283      0.014      1.986      0.047       0.000       0.056
typ_boite_nb_rapp_V 0                0.0124      0.003      3.875      0.000       0.006       0.019
champ_v9_"715/2007*143/2013EURO5     0.0416      0.004     10.348      0.000       0.034       0.049
champ_v9_"715/2007*143/2013EURO6    -0.0766      0.003    -26.620      0.000      -0.082      -0.071
champ_v9_"715/2007*195/2013EURO5     0.0221      0.002     11.822      0.000       0.018       0.026
champ_v9_"715/2007*195/2013EURO6    -0.0848      0.002    -43.179      0.000      -0.089      -0.081
champ_v9_"715/2007*459/2012EURO5     0.0036      0.002      1.449      0.147      -0.001       0.008
champ_v9_"715/2007*459/2012EURO6    -0.0591      0.007     -8.346      0.000      -0.073      -0.045
champ_v9_"715/2007*566/2011EURO5     0.0289      0.002     14.193      0.000       0.025       0.033
champ_v9_"715/2007*566/2011EURO6    -0.1003      0.004    -26.084      0.000      -0.108      -0.093
champ_v9_"715/2007*630/2012EURO5     0.0207      0.002     10.835      0.000       0.017       0.024
champ_v9_"715/2007*630/2012EURO6    -0.0906      0.002    -38.097      0.000      -0.095      -0.086
champ_v9_"715/2007*692/2008EURO5     0.0101      0.002      4.949      0.000       0.006       0.014
champ_v9_715/20                      0.0604      0.011      5.520      0.000       0.039       0.082
champ_v9_715/2007*                  -0.0038      0.011     -0.344      0.731      -0.025       0.018
champ_v9_715/2007*1                  0.0331      0.009      3.753      0.000       0.016       0.050
champ_v9_715/2007*143/2013EURO5      0.0483      0.007      6.518      0.000       0.034       0.063
champ_v9_715/2007*195/20            -0.0119      0.008     -1.491      0.136      -0.027       0.004
champ_v9_715/2007*195/2013          -0.0039      0.015     -0.256      0.798      -0.034       0.026
champ_v9_715/2007*195/2013EUR        0.0627      0.015      4.200      0.000       0.033       0.092
champ_v9_715/2007*195/2013EURO5      0.0447      0.003     16.767      0.000       0.039       0.050
champ_v9_715/2007*195/2013EURO6     -0.0415      0.003    -12.203      0.000      -0.048      -0.035
champ_v9_715/2007*459/2012EU        -0.0065      0.015     -0.437      0.662      -0.036       0.023
champ_v9_715/2007*459/2012EURO      -0.0069      0.011     -0.648      0.517      -0.028       0.014
champ_v9_715/2007*459/2012EURO5      0.0383      0.005      7.747      0.000       0.029       0.048
champ_v9_715/2007*566/2011EURO5      0.0442      0.003     15.099      0.000       0.038       0.050
champ_v9_715/2007*630/2012EURO       0.0430      0.007      6.447      0.000       0.030       0.056
champ_v9_715/2007*630/2012EURO5      0.0462      0.003     17.027      0.000       0.041       0.051
champ_v9_715/2007*630/2012EURO6     -0.0613      0.008     -7.938      0.000      -0.076      -0.046
champ_v9_715/2007*692/2008EURO5      0.0436      0.003     14.714      0.000       0.038       0.049
Carrosserie_BERLINE                 -0.0028      0.001     -2.892      0.004      -0.005      -0.001
Carrosserie_BREAK                   -0.0042      0.001     -3.873      0.000      -0.006      -0.002
Carrosserie_CABRIOLET               -0.0120      0.001     -8.083      0.000      -0.015      -0.009
Carrosserie_COMBISPACE               0.0012      0.002      0.691      0.490      -0.002       0.005
Carrosserie_COMBISPCACE              0.0165      0.008      2.013      0.044       0.000       0.033
Carrosserie_COUPE                   -0.0116      0.001     -8.246      0.000      -0.014      -0.009
Carrosserie_MINIBUS                  0.0661      0.001     51.649      0.000       0.064       0.069
Carrosserie_MINISPACE               -0.0016      0.003     -0.613      0.540      -0.007       0.003
Carrosserie_MONOSPACE                0.0081      0.002      3.364      0.001       0.003       0.013
Carrosserie_MONOSPACE COMPACT       -0.0069      0.001     -4.849      0.000      -0.010      -0.004
Carrosserie_TS TERRAINS/CHEMINS     -0.0085      0.001     -7.252      0.000      -0.011      -0.006
gamme_ECONOMIQUE                     0.0160      0.003      5.036      0.000       0.010       0.022
gamme_INFERIEURE                     0.0068      0.001      5.646      0.000       0.004       0.009
gamme_LUXE                           0.0016      0.001      1.554      0.120      -0.000       0.004
gamme_MOY-INFER                      0.0101      0.001     12.498      0.000       0.008       0.012
gamme_MOY-INFERIEURE                -0.0036      0.002     -1.595      0.111      -0.008       0.001
gamme_MOY-SUPER                      0.0081      0.001      9.905      0.000       0.006       0.010
gamme_SUPERIEURE                     0.0054      0.001      5.168      0.000       0.003       0.007
==============================================================================
Omnibus:                    42880.249   Durbin-Watson:                   1.989
Prob(Omnibus):                  0.000   Jarque-Bera (JB):         53597525.584
Skew:                           3.579   Prob(JB):                         0.00
Kurtosis:                     172.489   Cond. No.                     2.64e+17
==============================================================================

Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The smallest eigenvalue is 6.5e-24. This might indicate that there are
strong multicollinearity problems or that the design matrix is singular.




                            OLS Regression Results                            
==============================================================================
Dep. Variable:                  hcnox   R-squared:                       0.801
Model:                            OLS   Adj. R-squared:                  0.801
Method:                 Least Squares   F-statistic:                     1837.
Date:                Sat, 09 Jul 2022   Prob (F-statistic):               0.00
Time:                        16:58:25   Log-Likelihood:             1.1954e+05
No. Observations:               44699   AIC:                        -2.389e+05
Df Residuals:                   44600   BIC:                        -2.380e+05
Df Model:                          98                                         
Covariance Type:            nonrobust                                         
====================================================================================================
                                       coef    std err          t      P>|t|      [0.025      0.975]
----------------------------------------------------------------------------------------------------
const                                0.0426      0.003     15.460      0.000       0.037       0.048
puiss_admin_98                       0.0167      0.000     72.672      0.000       0.016       0.017
puiss_max                           -0.0008   1.82e-05    -46.113      0.000      -0.001      -0.001
conso_urb                           -0.0142      0.001    -13.425      0.000      -0.016      -0.012
conso_exurb                         -0.0186      0.002    -10.898      0.000      -0.022      -0.015
conso_mixte                          0.0275      0.003     10.548      0.000       0.022       0.033
masse_ordma_min                  -3.874e-06   9.49e-07     -4.082      0.000   -5.73e-06   -2.01e-06
masse_ordma_max                    -2.7e-06   9.04e-07     -2.987      0.003   -4.47e-06   -9.29e-07
lib_mrq_ALFA-ROMEO                   0.0218      0.003      8.221      0.000       0.017       0.027
lib_mrq_AUDI                         0.0094      0.003      3.245      0.001       0.004       0.015
lib_mrq_BMW                          0.0101      0.003      3.365      0.001       0.004       0.016
lib_mrq_CHEVROLET                   -0.0089      0.003     -2.819      0.005      -0.015      -0.003
lib_mrq_CITROEN                      0.0258      0.003      9.615      0.000       0.021       0.031
lib_mrq_DACIA                       -0.0141      0.005     -3.066      0.002      -0.023      -0.005
lib_mrq_FIAT                         0.0164      0.002      8.654      0.000       0.013       0.020
lib_mrq_FORD                         0.0282      0.003      9.801      0.000       0.023       0.034
lib_mrq_HONDA                       -0.0156      0.004     -3.629      0.000      -0.024      -0.007
lib_mrq_HYUNDAI                     -0.0091      0.003     -2.935      0.003      -0.015      -0.003
lib_mrq_INFINITI                    -0.0264      0.006     -4.146      0.000      -0.039      -0.014
lib_mrq_JAGUAR                   -7.515e-05      0.005     -0.014      0.989      -0.010       0.010
lib_mrq_JEEP                        -0.0238      0.003     -7.663      0.000      -0.030      -0.018
lib_mrq_KIA                         -0.0182      0.003     -6.153      0.000      -0.024      -0.012
lib_mrq_LANCIA                       0.0277      0.004      7.469      0.000       0.020       0.035
lib_mrq_LAND ROVER                  -0.0069      0.004     -1.843      0.065      -0.014       0.000
lib_mrq_LEXUS                       -0.0008      0.005     -0.169      0.866      -0.011       0.009
lib_mrq_MASERATI                    -0.0179      0.007     -2.545      0.011      -0.032      -0.004
lib_mrq_MAZDA                        0.0062      0.007      0.910      0.363      -0.007       0.020
lib_mrq_MERCEDES                     0.0175      0.003      6.565      0.000       0.012       0.023
lib_mrq_MINI                         0.0059      0.003      1.898      0.058      -0.000       0.012
lib_mrq_MITSUBISHI                   0.0250      0.004      6.340      0.000       0.017       0.033
lib_mrq_NISSAN                       0.0150      0.003      5.138      0.000       0.009       0.021
lib_mrq_OPEL                         0.0097      0.003      3.063      0.002       0.003       0.016
lib_mrq_PEUGEOT                      0.0104      0.002      5.091      0.000       0.006       0.014
lib_mrq_PORSCHE                     -0.0569      0.005    -11.387      0.000      -0.067      -0.047
lib_mrq_RENAULT                     -0.0156      0.002     -7.520      0.000      -0.020      -0.012
lib_mrq_SEAT                        -0.0119      0.003     -4.619      0.000      -0.017      -0.007
lib_mrq_SKODA                       -0.0125      0.003     -4.983      0.000      -0.017      -0.008
lib_mrq_SMART                        0.0003      0.009      0.030      0.976      -0.018       0.018
lib_mrq_SSANGYONG                    0.0468      0.007      6.778      0.000       0.033       0.060
lib_mrq_SUBARU                       0.0094      0.006      1.633      0.103      -0.002       0.021
lib_mrq_SUZUKI                       0.0221      0.005      4.045      0.000       0.011       0.033
lib_mrq_TOYOTA                      -0.0220      0.003     -8.762      0.000      -0.027      -0.017
lib_mrq_VOLKSWAGEN                   0.0112      0.003      4.106      0.000       0.006       0.017
lib_mrq_VOLVO                       -0.0155      0.002     -6.297      0.000      -0.020      -0.011
cod_cbr_ES                          -0.0505      0.003    -14.478      0.000      -0.057      -0.044
cod_cbr_GH                           0.0439      0.007      6.157      0.000       0.030       0.058
cod_cbr_GL                          -0.0140      0.011     -1.257      0.209      -0.036       0.008
cod_cbr_GO                           0.0632      0.002     26.977      0.000       0.059       0.068
hybride_non                          0.0127      0.002      5.141      0.000       0.008       0.018
hybride_oui                          0.0299      0.004      7.026      0.000       0.022       0.038
typ_boite_nb_rapp_A 5                0.0067      0.002      3.752      0.000       0.003       0.010
typ_boite_nb_rapp_A 6               -0.0033      0.002     -1.748      0.080      -0.007       0.000
typ_boite_nb_rapp_A 7                0.0083      0.002      4.605      0.000       0.005       0.012
typ_boite_nb_rapp_A 8               -0.0219      0.002     -9.288      0.000      -0.026      -0.017
typ_boite_nb_rapp_A 9                0.0112      0.003      3.379      0.001       0.005       0.018
typ_boite_nb_rapp_D 5                0.0022      0.005      0.476      0.634      -0.007       0.011
typ_boite_nb_rapp_D 6               -0.0250      0.007     -3.686      0.000      -0.038      -0.012
typ_boite_nb_rapp_M 5                0.0076      0.002      3.906      0.000       0.004       0.011
typ_boite_nb_rapp_M 6                0.0114      0.002      6.498      0.000       0.008       0.015
typ_boite_nb_rapp_S 6                0.0414      0.016      2.666      0.008       0.011       0.072
typ_boite_nb_rapp_V 0                0.0042      0.003      1.198      0.231      -0.003       0.011
champ_v9_"715/2007*143/2013EURO5     0.0413      0.004      9.439      0.000       0.033       0.050
champ_v9_"715/2007*143/2013EURO6    -0.0683      0.003    -21.825      0.000      -0.074      -0.062
champ_v9_"715/2007*195/2013EURO5     0.0242      0.002     11.885      0.000       0.020       0.028
champ_v9_"715/2007*195/2013EURO6    -0.0772      0.002    -36.094      0.000      -0.081      -0.073
champ_v9_"715/2007*459/2012EURO5     0.0048      0.003      1.754      0.079      -0.001       0.010
champ_v9_"715/2007*459/2012EURO6    -0.0741      0.008     -9.604      0.000      -0.089      -0.059
champ_v9_"715/2007*566/2011EURO5     0.0376      0.002     16.958      0.000       0.033       0.042
champ_v9_"715/2007*566/2011EURO6    -0.0974      0.004    -23.266      0.000      -0.106      -0.089
champ_v9_"715/2007*630/2012EURO5     0.0300      0.002     14.414      0.000       0.026       0.034
champ_v9_"715/2007*630/2012EURO6    -0.0872      0.003    -33.687      0.000      -0.092      -0.082
champ_v9_"715/2007*692/2008EURO5    -0.0033      0.002     -1.497      0.134      -0.008       0.001
champ_v9_715/20                      0.0735      0.012      6.168      0.000       0.050       0.097
champ_v9_715/2007*                  -0.0242      0.012     -2.033      0.042      -0.048      -0.001
champ_v9_715/2007*1                  0.0285      0.010      2.962      0.003       0.010       0.047
champ_v9_715/2007*143/2013EURO5      0.0353      0.008      4.369      0.000       0.019       0.051
champ_v9_715/2007*195/20            -0.0220      0.009     -2.546      0.011      -0.039      -0.005
champ_v9_715/2007*195/2013          -0.0244      0.016     -1.477      0.140      -0.057       0.008
champ_v9_715/2007*195/2013EUR        0.0543      0.016      3.346      0.001       0.023       0.086
champ_v9_715/2007*195/2013EURO5      0.0472      0.003     16.273      0.000       0.042       0.053
champ_v9_715/2007*195/2013EURO6     -0.0294      0.004     -7.950      0.000      -0.037      -0.022
champ_v9_715/2007*459/2012EU        -0.0035      0.016     -0.216      0.829      -0.035       0.028
champ_v9_715/2007*459/2012EURO      -0.0039      0.012     -0.333      0.739      -0.027       0.019
champ_v9_715/2007*459/2012EURO5      0.0367      0.005      6.818      0.000       0.026       0.047
champ_v9_715/2007*566/2011EURO5      0.0456      0.003     14.329      0.000       0.039       0.052
champ_v9_715/2007*630/2012EURO       0.0519      0.007      7.155      0.000       0.038       0.066
champ_v9_715/2007*630/2012EURO5      0.0475      0.003     16.110      0.000       0.042       0.053
champ_v9_715/2007*630/2012EURO6     -0.0454      0.008     -5.403      0.000      -0.062      -0.029
champ_v9_715/2007*692/2008EURO5      0.0445      0.003     13.778      0.000       0.038       0.051
Carrosserie_BERLINE                 -0.0025      0.001     -2.376      0.017      -0.005      -0.000
Carrosserie_BREAK                   -0.0048      0.001     -4.130      0.000      -0.007      -0.003
Carrosserie_CABRIOLET               -0.0152      0.002     -9.381      0.000      -0.018      -0.012
Carrosserie_COMBISPACE               0.0028      0.002      1.451      0.147      -0.001       0.006
Carrosserie_COMBISPCACE              0.0175      0.009      1.955      0.051   -4.57e-05       0.035
Carrosserie_COUPE                   -0.0152      0.002     -9.919      0.000      -0.018      -0.012
Carrosserie_MINIBUS                  0.0704      0.001     50.508      0.000       0.068       0.073
Carrosserie_MINISPACE               -0.0106      0.003     -3.816      0.000      -0.016      -0.005
Carrosserie_MONOSPACE                0.0115      0.003      4.370      0.000       0.006       0.017
Carrosserie_MONOSPACE COMPACT       -0.0032      0.002     -2.111      0.035      -0.006      -0.000
Carrosserie_TS TERRAINS/CHEMINS     -0.0079      0.001     -6.193      0.000      -0.010      -0.005
gamme_ECONOMIQUE                     0.0240      0.003      6.913      0.000       0.017       0.031
gamme_INFERIEURE                     0.0148      0.001     11.360      0.000       0.012       0.017
gamme_LUXE                          -0.0009      0.001     -0.790      0.429      -0.003       0.001
gamme_MOY-INFER                      0.0109      0.001     12.367      0.000       0.009       0.013
gamme_MOY-INFERIEURE                -0.0115      0.002     -4.717      0.000      -0.016      -0.007
gamme_MOY-SUPER                      0.0079      0.001      8.914      0.000       0.006       0.010
gamme_SUPERIEURE                    -0.0026      0.001     -2.234      0.026      -0.005      -0.000
==============================================================================
Omnibus:                    14238.312   Durbin-Watson:                   1.989
Prob(Omnibus):                  0.000   Jarque-Bera (JB):           732082.939
Skew:                           0.759   Prob(JB):                         0.00
Kurtosis:                      22.768   Cond. No.                     2.64e+17
==============================================================================

Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The smallest eigenvalue is 6.5e-24. This might indicate that there are
strong multicollinearity problems or that the design matrix is singular.




                            OLS Regression Results                            
==============================================================================
Dep. Variable:                   ptcl   R-squared:                       0.374
Model:                            OLS   Adj. R-squared:                  0.372
Method:                 Least Squares   F-statistic:                     271.7
Date:                Sat, 09 Jul 2022   Prob (F-statistic):               0.00
Time:                        16:58:25   Log-Likelihood:             2.8084e+05
No. Observations:               44699   AIC:                        -5.615e+05
Df Residuals:                   44600   BIC:                        -5.606e+05
Df Model:                          98                                         
Covariance Type:            nonrobust                                         
====================================================================================================
                                       coef    std err          t      P>|t|      [0.025      0.975]
----------------------------------------------------------------------------------------------------
const                               -0.0001   7.46e-05     -1.583      0.113      -0.000    2.81e-05
puiss_admin_98                       0.0002   6.23e-06     37.782      0.000       0.000       0.000
puiss_max                        -1.748e-05   4.93e-07    -35.494      0.000   -1.84e-05   -1.65e-05
conso_urb                           -0.0007   2.86e-05    -25.425      0.000      -0.001      -0.001
conso_exurb                         -0.0003   4.61e-05     -5.634      0.000      -0.000      -0.000
conso_mixte                          0.0011   7.06e-05     16.285      0.000       0.001       0.001
masse_ordma_min                  -6.879e-08   2.57e-08     -2.675      0.007   -1.19e-07   -1.84e-08
masse_ordma_max                  -1.562e-07   2.45e-08     -6.379      0.000   -2.04e-07   -1.08e-07
lib_mrq_ALFA-ROMEO                   0.0007   7.17e-05      9.926      0.000       0.001       0.001
lib_mrq_AUDI                        -0.0006   7.85e-05     -7.780      0.000      -0.001      -0.000
lib_mrq_BMW                         -0.0004   8.12e-05     -4.773      0.000      -0.001      -0.000
lib_mrq_CHEVROLET                    0.0003   8.58e-05      3.786      0.000       0.000       0.000
lib_mrq_CITROEN                      0.0004   7.26e-05      5.739      0.000       0.000       0.001
lib_mrq_DACIA                       -0.0004      0.000     -3.453      0.001      -0.001      -0.000
lib_mrq_FIAT                         0.0008   5.15e-05     16.373      0.000       0.001       0.001
lib_mrq_FORD                         0.0007   7.79e-05      9.523      0.000       0.001       0.001
lib_mrq_HONDA                       -0.0003      0.000     -2.933      0.003      -0.001      -0.000
lib_mrq_HYUNDAI                   1.774e-05   8.39e-05      0.211      0.833      -0.000       0.000
lib_mrq_INFINITI                    -0.0005      0.000     -2.933      0.003      -0.001      -0.000
lib_mrq_JAGUAR                       0.0012      0.000      8.559      0.000       0.001       0.001
lib_mrq_JEEP                        -0.0011    8.4e-05    -13.556      0.000      -0.001      -0.001
lib_mrq_KIA                         -0.0001      8e-05     -1.852      0.064      -0.000    8.61e-06
lib_mrq_LANCIA                      -0.0001      0.000     -1.289      0.197      -0.000    6.74e-05
lib_mrq_LAND ROVER                7.788e-05      0.000      0.763      0.445      -0.000       0.000
lib_mrq_LEXUS                        0.0002      0.000      1.437      0.151   -7.06e-05       0.000
lib_mrq_MASERATI                    -0.0007      0.000     -3.646      0.000      -0.001      -0.000
lib_mrq_MAZDA                        0.0001      0.000      0.568      0.570      -0.000       0.000
lib_mrq_MERCEDES                    -0.0004    7.2e-05     -5.231      0.000      -0.001      -0.000
lib_mrq_MINI                        -0.0006   8.37e-05     -6.909      0.000      -0.001      -0.000
lib_mrq_MITSUBISHI                   0.0014      0.000     13.136      0.000       0.001       0.002
lib_mrq_NISSAN                      -0.0003   7.92e-05     -3.186      0.001      -0.000   -9.71e-05
lib_mrq_OPEL                         0.0003   8.58e-05      3.259      0.001       0.000       0.000
lib_mrq_PEUGEOT                      0.0006   5.54e-05     10.586      0.000       0.000       0.001
lib_mrq_PORSCHE                     -0.0011      0.000     -8.011      0.000      -0.001      -0.001
lib_mrq_RENAULT                  -7.297e-05   5.62e-05     -1.298      0.194      -0.000    3.73e-05
lib_mrq_SEAT                        -0.0003   6.96e-05     -3.860      0.000      -0.000      -0.000
lib_mrq_SKODA                       -0.0003    6.8e-05     -4.843      0.000      -0.000      -0.000
lib_mrq_SMART                        0.0003      0.000      1.065      0.287      -0.000       0.001
lib_mrq_SSANGYONG                   -0.0005      0.000     -2.522      0.012      -0.001      -0.000
lib_mrq_SUBARU                      -0.0003      0.000     -1.881      0.060      -0.001    1.23e-05
lib_mrq_SUZUKI                       0.0001      0.000      0.683      0.495      -0.000       0.000
lib_mrq_TOYOTA                       0.0005   6.81e-05      6.701      0.000       0.000       0.001
lib_mrq_VOLKSWAGEN                   0.0001   7.38e-05      1.606      0.108   -2.62e-05       0.000
lib_mrq_VOLVO                        0.0001   6.67e-05      2.101      0.036     9.4e-06       0.000
cod_cbr_ES                          -0.0002   9.45e-05     -1.725      0.085      -0.000    2.22e-05
cod_cbr_GH                        -5.03e-06      0.000     -0.026      0.979      -0.000       0.000
cod_cbr_GL                          -0.0002      0.000     -0.551      0.582      -0.001       0.000
cod_cbr_GO                           0.0002   6.35e-05      3.410      0.001     9.2e-05       0.000
hybride_non                        5.34e-05   6.69e-05      0.799      0.425   -7.77e-05       0.000
hybride_oui                         -0.0002      0.000     -1.489      0.136      -0.000    5.43e-05
typ_boite_nb_rapp_A 5                0.0007   4.81e-05     13.528      0.000       0.001       0.001
typ_boite_nb_rapp_A 6            -1.849e-05   5.19e-05     -0.356      0.722      -0.000    8.32e-05
typ_boite_nb_rapp_A 7                0.0004   4.87e-05      8.875      0.000       0.000       0.001
typ_boite_nb_rapp_A 8               -0.0001   6.38e-05     -2.272      0.023      -0.000   -1.99e-05
typ_boite_nb_rapp_A 9            -1.875e-05   8.98e-05     -0.209      0.835      -0.000       0.000
typ_boite_nb_rapp_D 5               -0.0005      0.000     -3.754      0.000      -0.001      -0.000
typ_boite_nb_rapp_D 6               -0.0005      0.000     -2.699      0.007      -0.001      -0.000
typ_boite_nb_rapp_M 5               -0.0001   5.27e-05     -2.581      0.010      -0.000   -3.28e-05
typ_boite_nb_rapp_M 6                0.0002   4.74e-05      4.937      0.000       0.000       0.000
typ_boite_nb_rapp_S 6               -0.0004      0.000     -0.901      0.368      -0.001       0.000
typ_boite_nb_rapp_V 0                0.0002   9.44e-05      2.439      0.015    4.52e-05       0.000
champ_v9_"715/2007*143/2013EURO5     0.0002      0.000      2.082      0.037    1.44e-05       0.000
champ_v9_"715/2007*143/2013EURO6    -0.0001   8.48e-05     -1.569      0.117      -0.000    3.31e-05
champ_v9_"715/2007*195/2013EURO5  4.896e-05   5.51e-05      0.888      0.374   -5.91e-05       0.000
champ_v9_"715/2007*195/2013EURO6     0.0006   5.79e-05     10.839      0.000       0.001       0.001
champ_v9_"715/2007*459/2012EURO5    -0.0004   7.34e-05     -4.859      0.000      -0.001      -0.000
champ_v9_"715/2007*459/2012EURO6    -0.0008      0.000     -3.698      0.000      -0.001      -0.000
champ_v9_"715/2007*566/2011EURO5 -5.983e-06      6e-05     -0.100      0.921      -0.000       0.000
champ_v9_"715/2007*566/2011EURO6     0.0006      0.000      4.857      0.000       0.000       0.001
champ_v9_"715/2007*630/2012EURO5     0.0003   5.64e-05      4.448      0.000       0.000       0.000
champ_v9_"715/2007*630/2012EURO6  4.682e-05   7.02e-05      0.667      0.505   -9.07e-05       0.000
champ_v9_"715/2007*692/2008EURO5     0.0002   6.02e-05      3.386      0.001    8.58e-05       0.000
champ_v9_715/20                      0.0008      0.000      2.602      0.009       0.000       0.001
champ_v9_715/2007*               -1.261e-05      0.000     -0.039      0.969      -0.001       0.001
champ_v9_715/2007*1                 -0.0011      0.000     -4.076      0.000      -0.002      -0.001
champ_v9_715/2007*143/2013EURO5      0.0001      0.000      0.658      0.511      -0.000       0.001
champ_v9_715/2007*195/20             0.0005      0.000      2.098      0.036    3.25e-05       0.001
champ_v9_715/2007*195/2013       -1.643e-05      0.000     -0.037      0.971      -0.001       0.001
champ_v9_715/2007*195/2013EUR        0.0005      0.000      1.033      0.302      -0.000       0.001
champ_v9_715/2007*195/2013EURO5      0.0002   7.86e-05      2.985      0.003    8.06e-05       0.000
champ_v9_715/2007*195/2013EURO6   8.913e-05      0.000      0.889      0.374      -0.000       0.000
champ_v9_715/2007*459/2012EU        -0.0014      0.000     -3.128      0.002      -0.002      -0.001
champ_v9_715/2007*459/2012EURO      -0.0014      0.000     -4.426      0.000      -0.002      -0.001
champ_v9_715/2007*459/2012EURO5      0.0003      0.000      2.345      0.019     5.6e-05       0.001
champ_v9_715/2007*566/2011EURO5      0.0004   8.63e-05      4.664      0.000       0.000       0.001
champ_v9_715/2007*630/2012EURO      -0.0008      0.000     -4.091      0.000      -0.001      -0.000
champ_v9_715/2007*630/2012EURO5      0.0004   7.99e-05      4.460      0.000       0.000       0.001
champ_v9_715/2007*630/2012EURO6     -0.0001      0.000     -0.531      0.595      -0.001       0.000
champ_v9_715/2007*692/2008EURO5      0.0006   8.74e-05      6.865      0.000       0.000       0.001
Carrosserie_BERLINE               5.101e-05    2.9e-05      1.759      0.079   -5.82e-06       0.000
Carrosserie_BREAK                    0.0002   3.16e-05      6.906      0.000       0.000       0.000
Carrosserie_CABRIOLET                0.0002   4.38e-05      5.152      0.000       0.000       0.000
Carrosserie_COMBISPACE              -0.0004   5.15e-05     -8.576      0.000      -0.001      -0.000
Carrosserie_COMBISPCACE           4.922e-05      0.000      0.203      0.839      -0.000       0.001
Carrosserie_COUPE                    0.0003   4.16e-05      6.086      0.000       0.000       0.000
Carrosserie_MINIBUS                  0.0002   3.77e-05      4.211      0.000    8.49e-05       0.000
Carrosserie_MINISPACE               -0.0001   7.52e-05     -1.855      0.064      -0.000    7.87e-06
Carrosserie_MONOSPACE               -0.0003   7.12e-05     -4.697      0.000      -0.000      -0.000
Carrosserie_MONOSPACE COMPACT     8.465e-05   4.17e-05      2.032      0.042    2.98e-06       0.000
Carrosserie_TS TERRAINS/CHEMINS     -0.0002   3.46e-05     -7.053      0.000      -0.000      -0.000
gamme_ECONOMIQUE                    -0.0001   9.39e-05     -1.447      0.148      -0.000    4.82e-05
gamme_INFERIEURE                     0.0001   3.53e-05      2.849      0.004    3.14e-05       0.000
gamme_LUXE                           0.0003   3.04e-05      9.230      0.000       0.000       0.000
gamme_MOY-INFER                  -2.186e-06   2.38e-05     -0.092      0.927   -4.88e-05    4.44e-05
gamme_MOY-INFERIEURE                -0.0003   6.62e-05     -4.770      0.000      -0.000      -0.000
gamme_MOY-SUPER                  -2.876e-05   2.41e-05     -1.195      0.232   -7.59e-05    1.84e-05
gamme_SUPERIEURE                 -1.668e-05    3.1e-05     -0.538      0.591   -7.74e-05    4.41e-05
==============================================================================
Omnibus:                    11428.486   Durbin-Watson:                   1.995
Prob(Omnibus):                  0.000   Jarque-Bera (JB):           140799.519
Skew:                           0.882   Prob(JB):                         0.00
Kurtosis:                      11.514   Cond. No.                     2.64e+17
==============================================================================

Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The smallest eigenvalue is 6.5e-24. This might indicate that there are
strong multicollinearity problems or that the design matrix is singular.


Remarques:

  • On sait, d'après le tableau des corrélations, que plusieurs variables explicatives sont fortement corrélées entre elles(e.g les différents types de consommation, la puissance administrative et la puissance fiscale). Le modèle serait donc différent si l'on ne considérait qu'une seule des variables corrélées .
  • Les modèles linéaires sont conçus sur l'ensemble du jeu de données mais on laisse la possibilité de les construire sur la base d'un jeu de données d'entraînement et de le tester sur le jeu de données de test (il suffit de changer le paramètre 'train_size' lors de l'instanciation des modèles)
  • Parfois les p-values associées aux coefficient sont "conventionnellement" élevées (i.e supérieures à 0.05), signe que l'on prendrait "trop de risque" à considérer que les valeurs constatées (par le calcul) ne sont pas dues au hasard.

Performance du modèle linéaire

Les performances des modèles linéaires semblent dépendre de la variable que l'on veut expliquer. À ce propos, voici, les valeurs des R$^2$ pour chacun des modèles linéaires:

In [25]:
r2s = multi_model.r2
r2s
Out[25]:
co2 co_typ_1 nox hcnox ptcl
$R^2$ 0.999488 0.630831 0.814504 0.801482 0.373839

Nous pouvons noter que la qualité de la régression linéaire est meilleure lorsque la variable de sortie est l'émission de CO$_2$ (R$^2$ $\approx$ 0.999) que lorsqu'il s'agit des émissions de monoxyde de carbone (R$^2$ $\approx$ 0.63) ou de particules(R$^2$ $\approx$ 0.37). Or, nous pouvons remarquer dans le tableau des corrélations que la variable 'co2' est relativement fortement corrélée à plus certaines variables (relatives aux types de consommations) que la variable 'co_typ_1'(monoxyde de carbone) ou 'ptcl'(particules) dont la corrélation avec les autres variables semble très faible. Il serait donc cohérent, dans le cadre de l'utilisation d'un modèle linéaire, qu'il soit plus difficile de modéliser le liens entre des variables dont les corrélations sont plus faibles relativement. C'est d'ailleurs ce qui expliquerait ces difficultées.

Pour pallier ce problème, deux éléments semblent envisageable :

  • Soit la corrélation, n'étant pas linéaire, pourrait être d'un autre type (quadratique, logarithmique, cubique...)
  • Soit on teste une autre approche pour la prédiction des variables

La première approche semble compliquée : si on observe les Tracés des relations par paires, il semble difficile d'observer un type particulier de relations des variables 'co_typ_1' et 'ptcl' avec les variables restantes.

On propose donc d'aborder d'autres aspects.

Une autre évaluation

Nous avons déjà de bonnes indications concernant les performances du modèles.

Nous proposons d'ajouter une phase d'évaluation supplémentaire en testant le modèle (conçu sur la base des données d'entraînement) sur les données de test. Nous utiliserons l'erreur quadratique moyenne (mean squared error ou mse*) comme métrique. Nous diviserons donc le jeu de données initial en un jeu de données d'entraînement (80%) et un jeu de données de test(20%). Et les données (de test et prédites) seront standardisées (de sorte que les valeurs de chaque quantité soient échelonnées sur des plages de valeurs plus proches) en opérant la transformation suivante : $$y_i^{nouveau} = \frac{y_i - \bar{y_i}}{\sigma(y_i)}$$

*$mse = \frac{1}{N}\sum_{i=1}^{N}\left(\mathbf{y_i^{prédit}} - \mathbf{y_i^{réel}}\right)^{2}$

  • $N$ : Taille de l'échantillon de test
  • La mse est calculée en considérant les quantités standardisées (i.e. $y_i^{nouveau}$) pour les données prédites et de test
  • Plus la mse est proche de zéro et plus cela signifie que la valeur prédite est proche de la vérité terrain

Voici les résultats que l'on obtient :

In [26]:
import warnings
warnings.filterwarnings('ignore')
multi_model_test = multi_lm(train_size=0.8,dependent=['co2','co_typ_1','nox','hcnox','ptcl'],
                            independent=list(set(list(df_enc.columns)).difference(list(['co2','co_typ_1','nox','hcnox','ptcl']))),
                            data_encoded=df_enc)
multi_model_test.evaluate()
Out[26]:
co2 co_typ_1 nox hcnox ptcl
mse 0.000528 0.426969 0.197552 0.229359 0.795727

Les tendances observées sur ce tableau semblent similaires à celles constatées sur le tableau des coefficients de pearson. Le modèle linéaire semble meilleur dans la prédiction des émissions de CO$_2$, moins bon dans la prédiction des résultats d'essais NO$_x$ et HC+NO$_x$. Enfin, il semble beaucoup moins performant dans la prédiction des résultats d'essais CO type 1 et d'émissions de particules.

Modélisation par réseaux de neurones

l'approche par modèles linéaires semblait performante dans la "prédiction" des émissions de CO$_2$, et, dans une mesure plus faible, des émissions de $NO_x$ et $HC+NO_x$ (hydrocarbures imbrûlés et $NO_x$). Par ailleurs, les modèles linéaires ne semblaient pas pertinent dans la "prédiction" de monoxyde de carbone et de particules. Ceci serait lié à une corrélation relativement faible aux variables explicatives.

Toujours dans l'optique d'évaluer des méthodes d'apprentissage automatique, on propose de tenter une approche par réseaux de neurones pour "prédire" les émissions de CO2 et polluants (particules, monoxyde de carbone, $NO_X$ et $HC+NO_x$).

In [27]:
X_train, X_test, y_train, y_test = train_test_split(df_enc.drop(['co2','co_typ_1','nox','hcnox','ptcl'],axis=1),
                                                    df_enc[['co2','co_typ_1','nox','hcnox','ptcl']], train_size=0.85)
#Pour générer un jeu de validation
X_train, X_valid, y_train, y_valid = train_test_split(X_train,
                                                    y_train, train_size=0.9)

# Création d'un dataframe pour récapituler les tailles de chaque jeux de données et leurs proportions respectives
dico={}
dico["Entraînement"] = y_train.shape[0]
dico["Validation"] = y_valid.shape[0]
dico["Test"] = y_test.shape[0]

data_nb = pd.DataFrame.from_dict(dico,orient='index',columns=['Nombre de données'])

data_nb['Proportions (%)'] = data_nb["Nombre de données"]*100 / data_nb["Nombre de données"].sum()

Le dataset est subdivisé en un jeu de données d'entraînement, de validation (pour garantir la qualité de l'apprentissage) et de test. En voici un récapitulatif :

In [28]:
data_nb
Out[28]:
Nombre de données Proportions (%)
Entraînement 34540 76.498859
Validation 3838 8.500365
Test 6773 15.000775

Environ 76% des données seront utilisées pour entraîner le modèle neuronal tandis que 9% serviront à observer la "qualité" de l'apprentissage et la capacité du modèle à généraliser. Enfin, on testera les performances du modèle sur les 15% des données restantes.

In [29]:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Flatten
from tensorflow.keras import regularizers

model = keras.Sequential()
model.add(Flatten(input_shape=(X_train.shape[1],))) #entrées
model.add(Dense(X_train.shape[1],activation='relu',activity_regularizer=regularizers.L2(1e-03)))
model.add(Dense(100,activation='relu',activity_regularizer=regularizers.L2(1e-03)))
model.add(Dense(100,activation='relu',activity_regularizer=regularizers.L2(1e-03)))
model.add(Dense(50,activation='relu',activity_regularizer=regularizers.L2(1e-03)))
model.add(Dense(20,activation='relu',activity_regularizer=regularizers.L2(1e-03)))
model.add(Dense(y_train.shape[1],activation='linear'))#sorties

On choisit un réseau dense à 6 couches (sans compter la couche d'entrée) avec paramètre de régularisation de type l2 (nous pourrions ajouter un "dropout" pour éviter le surapprentissage mais choisissons de tester cette configuration dans un premier temps). En voici un résumé:

In [30]:
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
flatten (Flatten)            (None, 106)               0         
_________________________________________________________________
dense (Dense)                (None, 106)               11342     
_________________________________________________________________
dense_1 (Dense)              (None, 100)               10700     
_________________________________________________________________
dense_2 (Dense)              (None, 100)               10100     
_________________________________________________________________
dense_3 (Dense)              (None, 50)                5050      
_________________________________________________________________
dense_4 (Dense)              (None, 20)                1020      
_________________________________________________________________
dense_5 (Dense)              (None, 5)                 105       
=================================================================
Total params: 38,317
Trainable params: 38,317
Non-trainable params: 0
_________________________________________________________________

Cette architecture peut, bien entendu, être amenée à évoluer pour améliorer les performances du modèle et étudier d'autres aspects de l'approche par réseaux neuronaux mais l'objectif ici est de tester une première approche et de la comparer au modèle linéaire.

In [31]:
from tensorflow.python.ops import math_ops
from tensorflow.keras import backend as K

def rmse(y_true,y_pred):
    return K.sqrt(K.mean(K.square(y_pred-y_true)))

model.compile(loss='mse',
              optimizer = keras.optimizers.Adam(lr=0.0001),metrics=['mse','mae',tf.keras.metrics.RootMeanSquaredError()])

history = model.fit(X_train, y_train, batch_size=64, epochs=250,validation_data=(X_valid, y_valid))

model.save('model.h5')
Epoch 1/250
540/540 [==============================] - 1s 2ms/step - loss: 6822.3901 - mse: 2458.6780 - mae: 35.7184 - root_mean_squared_error: 49.5851 - val_loss: 3793.0823 - val_mse: 1571.4738 - val_mae: 27.5713 - val_root_mean_squared_error: 39.6418
Epoch 2/250
540/540 [==============================] - 1s 2ms/step - loss: 2358.1226 - mse: 978.1435 - mae: 21.7629 - root_mean_squared_error: 31.2753 - val_loss: 1265.6903 - val_mse: 492.4330 - val_mae: 15.7903 - val_root_mean_squared_error: 22.1908
Epoch 3/250
540/540 [==============================] - 1s 2ms/step - loss: 756.5748 - mse: 242.6033 - mae: 10.7041 - root_mean_squared_error: 15.5757 - val_loss: 421.4594 - val_mse: 94.9787 - val_mae: 6.6452 - val_root_mean_squared_error: 9.7457
Epoch 4/250
540/540 [==============================] - 1s 2ms/step - loss: 301.9676 - mse: 53.6986 - mae: 4.5905 - root_mean_squared_error: 7.3279 - val_loss: 224.2209 - val_mse: 35.5594 - val_mae: 3.4351 - val_root_mean_squared_error: 5.9632
Epoch 5/250
540/540 [==============================] - 1s 2ms/step - loss: 188.3333 - mse: 23.6915 - mae: 2.6746 - root_mean_squared_error: 4.8674 - val_loss: 159.2849 - val_mse: 15.2100 - val_mae: 2.0726 - val_root_mean_squared_error: 3.9000
Epoch 6/250
540/540 [==============================] - 1s 2ms/step - loss: 144.8938 - mse: 13.4510 - mae: 1.8804 - root_mean_squared_error: 3.6676 - val_loss: 130.8683 - val_mse: 10.7600 - val_mae: 1.6345 - val_root_mean_squared_error: 3.2802
Epoch 7/250
540/540 [==============================] - 1s 2ms/step - loss: 123.0334 - mse: 9.4086 - mae: 1.4938 - root_mean_squared_error: 3.0673 - val_loss: 115.0376 - val_mse: 11.5342 - val_mae: 1.6416 - val_root_mean_squared_error: 3.3962
Epoch 8/250
540/540 [==============================] - 1s 2ms/step - loss: 106.9924 - mse: 6.4646 - mae: 1.2008 - root_mean_squared_error: 2.5426 - val_loss: 99.3805 - val_mse: 6.4187 - val_mae: 1.1995 - val_root_mean_squared_error: 2.5335
Epoch 9/250
540/540 [==============================] - 1s 2ms/step - loss: 94.4979 - mse: 4.6456 - mae: 0.9943 - root_mean_squared_error: 2.1554 - val_loss: 88.1068 - val_mse: 3.2945 - val_mae: 0.8853 - val_root_mean_squared_error: 1.8151
Epoch 10/250
540/540 [==============================] - 1s 2ms/step - loss: 83.9192 - mse: 3.1990 - mae: 0.8890 - root_mean_squared_error: 1.7886 - val_loss: 78.7985 - val_mse: 3.6878 - val_mae: 0.9916 - val_root_mean_squared_error: 1.9204
Epoch 11/250
540/540 [==============================] - 1s 2ms/step - loss: 74.6618 - mse: 2.4443 - mae: 0.7956 - root_mean_squared_error: 1.5634 - val_loss: 69.4459 - val_mse: 2.1784 - val_mae: 0.7841 - val_root_mean_squared_error: 1.4759
Epoch 12/250
540/540 [==============================] - 1s 2ms/step - loss: 65.3729 - mse: 1.9306 - mae: 0.7118 - root_mean_squared_error: 1.3895 - val_loss: 60.6482 - val_mse: 1.1396 - val_mae: 0.5660 - val_root_mean_squared_error: 1.0675
Epoch 13/250
540/540 [==============================] - 1s 2ms/step - loss: 56.1915 - mse: 1.5433 - mae: 0.5950 - root_mean_squared_error: 1.2423 - val_loss: 52.0963 - val_mse: 2.2007 - val_mae: 0.6779 - val_root_mean_squared_error: 1.4835
Epoch 14/250
540/540 [==============================] - 1s 2ms/step - loss: 48.9265 - mse: 1.4131 - mae: 0.5225 - root_mean_squared_error: 1.1887 - val_loss: 46.0138 - val_mse: 1.5171 - val_mae: 0.5136 - val_root_mean_squared_error: 1.2317
Epoch 15/250
540/540 [==============================] - 1s 2ms/step - loss: 43.4579 - mse: 1.1525 - mae: 0.4643 - root_mean_squared_error: 1.0736 - val_loss: 41.2828 - val_mse: 1.9908 - val_mae: 0.6610 - val_root_mean_squared_error: 1.4110
Epoch 16/250
540/540 [==============================] - 1s 2ms/step - loss: 39.3751 - mse: 1.1737 - mae: 0.4679 - root_mean_squared_error: 1.0834 - val_loss: 38.3723 - val_mse: 1.1669 - val_mae: 0.4815 - val_root_mean_squared_error: 1.0802
Epoch 17/250
540/540 [==============================] - 1s 2ms/step - loss: 35.9414 - mse: 0.9825 - mae: 0.4191 - root_mean_squared_error: 0.9912 - val_loss: 34.1265 - val_mse: 0.9134 - val_mae: 0.4141 - val_root_mean_squared_error: 0.9557
Epoch 18/250
540/540 [==============================] - 1s 2ms/step - loss: 33.2670 - mse: 1.0547 - mae: 0.4200 - root_mean_squared_error: 1.0270 - val_loss: 33.2935 - val_mse: 1.7519 - val_mae: 0.5024 - val_root_mean_squared_error: 1.3236
Epoch 19/250
540/540 [==============================] - 1s 2ms/step - loss: 30.7787 - mse: 0.9172 - mae: 0.3940 - root_mean_squared_error: 0.9577 - val_loss: 29.3538 - val_mse: 0.8586 - val_mae: 0.4048 - val_root_mean_squared_error: 0.9266
Epoch 20/250
540/540 [==============================] - 1s 2ms/step - loss: 28.6163 - mse: 0.8297 - mae: 0.3751 - root_mean_squared_error: 0.9109 - val_loss: 27.4078 - val_mse: 0.8925 - val_mae: 0.4076 - val_root_mean_squared_error: 0.9447
Epoch 21/250
540/540 [==============================] - 1s 2ms/step - loss: 26.7600 - mse: 0.8535 - mae: 0.3779 - root_mean_squared_error: 0.9239 - val_loss: 25.7776 - val_mse: 1.0566 - val_mae: 0.4439 - val_root_mean_squared_error: 1.0279
Epoch 22/250
540/540 [==============================] - 1s 2ms/step - loss: 25.0733 - mse: 0.8234 - mae: 0.3694 - root_mean_squared_error: 0.9074 - val_loss: 24.1389 - val_mse: 0.8031 - val_mae: 0.3603 - val_root_mean_squared_error: 0.8962
Epoch 23/250
540/540 [==============================] - 1s 2ms/step - loss: 23.5876 - mse: 0.8929 - mae: 0.3767 - root_mean_squared_error: 0.9449 - val_loss: 22.0078 - val_mse: 0.4118 - val_mae: 0.2840 - val_root_mean_squared_error: 0.6417
Epoch 24/250
540/540 [==============================] - 1s 2ms/step - loss: 21.5952 - mse: 0.7784 - mae: 0.3600 - root_mean_squared_error: 0.8823 - val_loss: 20.8802 - val_mse: 1.1873 - val_mae: 0.4906 - val_root_mean_squared_error: 1.0896
Epoch 25/250
540/540 [==============================] - 1s 2ms/step - loss: 20.3773 - mse: 0.9109 - mae: 0.3793 - root_mean_squared_error: 0.9544 - val_loss: 19.5599 - val_mse: 0.9228 - val_mae: 0.4242 - val_root_mean_squared_error: 0.9606
Epoch 26/250
540/540 [==============================] - 1s 2ms/step - loss: 19.1075 - mse: 0.6682 - mae: 0.3352 - root_mean_squared_error: 0.8175 - val_loss: 18.4204 - val_mse: 0.4706 - val_mae: 0.2922 - val_root_mean_squared_error: 0.6860
Epoch 27/250
540/540 [==============================] - 1s 2ms/step - loss: 18.1428 - mse: 0.6295 - mae: 0.3246 - root_mean_squared_error: 0.7934 - val_loss: 18.7681 - val_mse: 2.1720 - val_mae: 0.6607 - val_root_mean_squared_error: 1.4738
Epoch 28/250
540/540 [==============================] - 1s 2ms/step - loss: 17.3381 - mse: 0.6626 - mae: 0.3346 - root_mean_squared_error: 0.8140 - val_loss: 16.9482 - val_mse: 0.6129 - val_mae: 0.3312 - val_root_mean_squared_error: 0.7829
Epoch 29/250
540/540 [==============================] - 1s 2ms/step - loss: 16.5605 - mse: 0.6322 - mae: 0.3261 - root_mean_squared_error: 0.7951 - val_loss: 16.2996 - val_mse: 0.5984 - val_mae: 0.3340 - val_root_mean_squared_error: 0.7736
Epoch 30/250
540/540 [==============================] - 1s 2ms/step - loss: 15.9120 - mse: 0.6480 - mae: 0.3282 - root_mean_squared_error: 0.8050 - val_loss: 15.2396 - val_mse: 0.3105 - val_mae: 0.2249 - val_root_mean_squared_error: 0.5572
Epoch 31/250
540/540 [==============================] - 1s 2ms/step - loss: 15.1937 - mse: 0.5505 - mae: 0.3042 - root_mean_squared_error: 0.7420 - val_loss: 14.6103 - val_mse: 0.2756 - val_mae: 0.2176 - val_root_mean_squared_error: 0.5250
Epoch 32/250
540/540 [==============================] - 1s 2ms/step - loss: 14.6738 - mse: 0.6021 - mae: 0.3139 - root_mean_squared_error: 0.7760 - val_loss: 14.0776 - val_mse: 0.3114 - val_mae: 0.2326 - val_root_mean_squared_error: 0.5580
Epoch 33/250
540/540 [==============================] - 1s 2ms/step - loss: 14.1512 - mse: 0.6036 - mae: 0.3168 - root_mean_squared_error: 0.7769 - val_loss: 13.6072 - val_mse: 0.4281 - val_mae: 0.2846 - val_root_mean_squared_error: 0.6543
Epoch 34/250
540/540 [==============================] - 1s 2ms/step - loss: 13.7908 - mse: 0.7075 - mae: 0.3383 - root_mean_squared_error: 0.8411 - val_loss: 13.4743 - val_mse: 0.5017 - val_mae: 0.2994 - val_root_mean_squared_error: 0.7083
Epoch 35/250
540/540 [==============================] - 1s 2ms/step - loss: 13.2365 - mse: 0.5701 - mae: 0.3050 - root_mean_squared_error: 0.7551 - val_loss: 13.0106 - val_mse: 0.6599 - val_mae: 0.3094 - val_root_mean_squared_error: 0.8123
Epoch 36/250
540/540 [==============================] - 1s 2ms/step - loss: 12.8816 - mse: 0.6050 - mae: 0.3138 - root_mean_squared_error: 0.7778 - val_loss: 12.6451 - val_mse: 0.7202 - val_mae: 0.3629 - val_root_mean_squared_error: 0.8486
Epoch 37/250
540/540 [==============================] - 1s 2ms/step - loss: 12.4635 - mse: 0.5446 - mae: 0.2969 - root_mean_squared_error: 0.7380 - val_loss: 12.0236 - val_mse: 0.3762 - val_mae: 0.2584 - val_root_mean_squared_error: 0.6133
Epoch 38/250
540/540 [==============================] - 1s 2ms/step - loss: 12.1065 - mse: 0.5384 - mae: 0.2965 - root_mean_squared_error: 0.7337 - val_loss: 11.9548 - val_mse: 0.6910 - val_mae: 0.3475 - val_root_mean_squared_error: 0.8313
Epoch 39/250
540/540 [==============================] - 1s 2ms/step - loss: 11.9704 - mse: 0.7356 - mae: 0.3408 - root_mean_squared_error: 0.8577 - val_loss: 11.8965 - val_mse: 0.9841 - val_mae: 0.4122 - val_root_mean_squared_error: 0.9920
Epoch 40/250
540/540 [==============================] - 1s 2ms/step - loss: 11.4250 - mse: 0.4835 - mae: 0.2834 - root_mean_squared_error: 0.6953 - val_loss: 11.3024 - val_mse: 0.6557 - val_mae: 0.3459 - val_root_mean_squared_error: 0.8098
Epoch 41/250
540/540 [==============================] - 1s 2ms/step - loss: 11.2791 - mse: 0.6229 - mae: 0.3158 - root_mean_squared_error: 0.7892 - val_loss: 11.1026 - val_mse: 0.5446 - val_mae: 0.3182 - val_root_mean_squared_error: 0.7380
Epoch 42/250
540/540 [==============================] - 1s 2ms/step - loss: 10.9312 - mse: 0.5355 - mae: 0.2914 - root_mean_squared_error: 0.7318 - val_loss: 10.5500 - val_mse: 0.3284 - val_mae: 0.2318 - val_root_mean_squared_error: 0.5731
Epoch 43/250
540/540 [==============================] - 1s 2ms/step - loss: 10.7273 - mse: 0.5816 - mae: 0.3012 - root_mean_squared_error: 0.7626 - val_loss: 10.2237 - val_mse: 0.2501 - val_mae: 0.2088 - val_root_mean_squared_error: 0.5001
Epoch 44/250
540/540 [==============================] - 1s 2ms/step - loss: 10.4041 - mse: 0.4977 - mae: 0.2854 - root_mean_squared_error: 0.7055 - val_loss: 10.0783 - val_mse: 0.3715 - val_mae: 0.2461 - val_root_mean_squared_error: 0.6095
Epoch 45/250
540/540 [==============================] - 1s 2ms/step - loss: 10.2773 - mse: 0.6016 - mae: 0.3052 - root_mean_squared_error: 0.7756 - val_loss: 12.8364 - val_mse: 3.0221 - val_mae: 0.7204 - val_root_mean_squared_error: 1.7384
Epoch 46/250
540/540 [==============================] - 1s 2ms/step - loss: 10.0733 - mse: 0.6074 - mae: 0.3111 - root_mean_squared_error: 0.7793 - val_loss: 9.6631 - val_mse: 0.2963 - val_mae: 0.2229 - val_root_mean_squared_error: 0.5443
Epoch 47/250
540/540 [==============================] - 1s 2ms/step - loss: 9.7536 - mse: 0.4852 - mae: 0.2797 - root_mean_squared_error: 0.6966 - val_loss: 9.7299 - val_mse: 0.5976 - val_mae: 0.3040 - val_root_mean_squared_error: 0.7731
Epoch 48/250
540/540 [==============================] - 1s 2ms/step - loss: 9.6581 - mse: 0.5872 - mae: 0.3012 - root_mean_squared_error: 0.7663 - val_loss: 9.2286 - val_mse: 0.2690 - val_mae: 0.2082 - val_root_mean_squared_error: 0.5187
Epoch 49/250
540/540 [==============================] - 1s 2ms/step - loss: 9.3687 - mse: 0.4845 - mae: 0.2818 - root_mean_squared_error: 0.6961 - val_loss: 9.8740 - val_mse: 1.2688 - val_mae: 0.4882 - val_root_mean_squared_error: 1.1264
Epoch 50/250
540/540 [==============================] - 1s 2ms/step - loss: 9.2249 - mse: 0.5163 - mae: 0.2867 - root_mean_squared_error: 0.7185 - val_loss: 9.8163 - val_mse: 1.1787 - val_mae: 0.4257 - val_root_mean_squared_error: 1.0857
Epoch 51/250
540/540 [==============================] - 1s 2ms/step - loss: 9.0609 - mse: 0.5198 - mae: 0.2918 - root_mean_squared_error: 0.7209 - val_loss: 9.2518 - val_mse: 0.7086 - val_mae: 0.3708 - val_root_mean_squared_error: 0.8418
Epoch 52/250
540/540 [==============================] - 1s 2ms/step - loss: 9.0136 - mse: 0.6299 - mae: 0.3186 - root_mean_squared_error: 0.7937 - val_loss: 8.6331 - val_mse: 0.3954 - val_mae: 0.2642 - val_root_mean_squared_error: 0.6288
Epoch 53/250
540/540 [==============================] - 1s 2ms/step - loss: 8.7819 - mse: 0.5491 - mae: 0.2946 - root_mean_squared_error: 0.7410 - val_loss: 8.5677 - val_mse: 0.4000 - val_mae: 0.2596 - val_root_mean_squared_error: 0.6325
Epoch 54/250
540/540 [==============================] - 1s 2ms/step - loss: 8.6328 - mse: 0.5411 - mae: 0.2898 - root_mean_squared_error: 0.7356 - val_loss: 8.2087 - val_mse: 0.2115 - val_mae: 0.1896 - val_root_mean_squared_error: 0.4599
Epoch 55/250
540/540 [==============================] - 1s 2ms/step - loss: 8.4300 - mse: 0.4786 - mae: 0.2795 - root_mean_squared_error: 0.6918 - val_loss: 9.3555 - val_mse: 1.3498 - val_mae: 0.5012 - val_root_mean_squared_error: 1.1618
Epoch 56/250
540/540 [==============================] - 1s 2ms/step - loss: 8.3294 - mse: 0.5105 - mae: 0.2845 - root_mean_squared_error: 0.7145 - val_loss: 7.9256 - val_mse: 0.2148 - val_mae: 0.1875 - val_root_mean_squared_error: 0.4634
Epoch 57/250
540/540 [==============================] - 1s 2ms/step - loss: 8.1413 - mse: 0.4508 - mae: 0.2714 - root_mean_squared_error: 0.6714 - val_loss: 8.0623 - val_mse: 0.4154 - val_mae: 0.2549 - val_root_mean_squared_error: 0.6445
Epoch 58/250
540/540 [==============================] - 1s 2ms/step - loss: 8.0216 - mse: 0.4588 - mae: 0.2761 - root_mean_squared_error: 0.6774 - val_loss: 7.9671 - val_mse: 0.4500 - val_mae: 0.2556 - val_root_mean_squared_error: 0.6708
Epoch 59/250
540/540 [==============================] - 1s 2ms/step - loss: 7.9585 - mse: 0.5239 - mae: 0.2879 - root_mean_squared_error: 0.7238 - val_loss: 7.7000 - val_mse: 0.3670 - val_mae: 0.2371 - val_root_mean_squared_error: 0.6058
Epoch 60/250
540/540 [==============================] - 1s 2ms/step - loss: 7.7966 - mse: 0.4819 - mae: 0.2765 - root_mean_squared_error: 0.6942 - val_loss: 7.7050 - val_mse: 0.5473 - val_mae: 0.3070 - val_root_mean_squared_error: 0.7398
Epoch 61/250
540/540 [==============================] - 1s 2ms/step - loss: 7.5712 - mse: 0.3719 - mae: 0.2489 - root_mean_squared_error: 0.6099 - val_loss: 7.3534 - val_mse: 0.2675 - val_mae: 0.2095 - val_root_mean_squared_error: 0.5172
Epoch 62/250
540/540 [==============================] - 1s 2ms/step - loss: 7.6044 - mse: 0.5209 - mae: 0.2887 - root_mean_squared_error: 0.7217 - val_loss: 7.2058 - val_mse: 0.2064 - val_mae: 0.1889 - val_root_mean_squared_error: 0.4543
Epoch 63/250
540/540 [==============================] - 1s 2ms/step - loss: 7.5148 - mse: 0.5379 - mae: 0.2891 - root_mean_squared_error: 0.7334 - val_loss: 7.1585 - val_mse: 0.2621 - val_mae: 0.2092 - val_root_mean_squared_error: 0.5119
Epoch 64/250
540/540 [==============================] - 1s 2ms/step - loss: 7.3201 - mse: 0.4424 - mae: 0.2671 - root_mean_squared_error: 0.6651 - val_loss: 7.2152 - val_mse: 0.4617 - val_mae: 0.2752 - val_root_mean_squared_error: 0.6795
Epoch 65/250
540/540 [==============================] - 1s 2ms/step - loss: 7.2631 - mse: 0.4776 - mae: 0.2729 - root_mean_squared_error: 0.6911 - val_loss: 7.0159 - val_mse: 0.2884 - val_mae: 0.2298 - val_root_mean_squared_error: 0.5371
Epoch 66/250
540/540 [==============================] - 1s 2ms/step - loss: 7.0811 - mse: 0.3915 - mae: 0.2524 - root_mean_squared_error: 0.6257 - val_loss: 7.0742 - val_mse: 0.5226 - val_mae: 0.3162 - val_root_mean_squared_error: 0.7229
Epoch 67/250
540/540 [==============================] - 1s 2ms/step - loss: 7.1192 - mse: 0.5234 - mae: 0.2853 - root_mean_squared_error: 0.7234 - val_loss: 6.8451 - val_mse: 0.3178 - val_mae: 0.2279 - val_root_mean_squared_error: 0.5638
Epoch 68/250
540/540 [==============================] - 1s 2ms/step - loss: 6.9445 - mse: 0.4366 - mae: 0.2620 - root_mean_squared_error: 0.6608 - val_loss: 6.8497 - val_mse: 0.4008 - val_mae: 0.2598 - val_root_mean_squared_error: 0.6331
Epoch 69/250
540/540 [==============================] - 1s 2ms/step - loss: 6.8766 - mse: 0.4578 - mae: 0.2719 - root_mean_squared_error: 0.6766 - val_loss: 6.6786 - val_mse: 0.3705 - val_mae: 0.2559 - val_root_mean_squared_error: 0.6087
Epoch 70/250
540/540 [==============================] - 1s 2ms/step - loss: 6.7574 - mse: 0.4252 - mae: 0.2640 - root_mean_squared_error: 0.6521 - val_loss: 6.6458 - val_mse: 0.4079 - val_mae: 0.2703 - val_root_mean_squared_error: 0.6387
Epoch 71/250
540/540 [==============================] - 1s 2ms/step - loss: 6.8023 - mse: 0.5514 - mae: 0.2896 - root_mean_squared_error: 0.7426 - val_loss: 6.4549 - val_mse: 0.2441 - val_mae: 0.2076 - val_root_mean_squared_error: 0.4940
Epoch 72/250
540/540 [==============================] - 1s 2ms/step - loss: 6.7692 - mse: 0.5895 - mae: 0.2920 - root_mean_squared_error: 0.7678 - val_loss: 6.5387 - val_mse: 0.4703 - val_mae: 0.2997 - val_root_mean_squared_error: 0.6858
Epoch 73/250
540/540 [==============================] - 1s 2ms/step - loss: 6.6173 - mse: 0.5095 - mae: 0.2798 - root_mean_squared_error: 0.7138 - val_loss: 6.3443 - val_mse: 0.3422 - val_mae: 0.2556 - val_root_mean_squared_error: 0.5850
Epoch 74/250
540/540 [==============================] - 1s 2ms/step - loss: 6.4495 - mse: 0.4115 - mae: 0.2570 - root_mean_squared_error: 0.6415 - val_loss: 6.3728 - val_mse: 0.3594 - val_mae: 0.2506 - val_root_mean_squared_error: 0.5995
Epoch 75/250
540/540 [==============================] - 1s 2ms/step - loss: 6.4852 - mse: 0.5153 - mae: 0.2758 - root_mean_squared_error: 0.7178 - val_loss: 6.1090 - val_mse: 0.2054 - val_mae: 0.1863 - val_root_mean_squared_error: 0.4532
Epoch 76/250
540/540 [==============================] - 1s 2ms/step - loss: 6.3158 - mse: 0.4138 - mae: 0.2554 - root_mean_squared_error: 0.6433 - val_loss: 6.1447 - val_mse: 0.3291 - val_mae: 0.2444 - val_root_mean_squared_error: 0.5737
Epoch 77/250
540/540 [==============================] - 1s 2ms/step - loss: 6.2736 - mse: 0.4381 - mae: 0.2633 - root_mean_squared_error: 0.6619 - val_loss: 5.9560 - val_mse: 0.1874 - val_mae: 0.1764 - val_root_mean_squared_error: 0.4329
Epoch 78/250
540/540 [==============================] - 1s 2ms/step - loss: 6.2303 - mse: 0.4591 - mae: 0.2694 - root_mean_squared_error: 0.6776 - val_loss: 6.2414 - val_mse: 0.4644 - val_mae: 0.2959 - val_root_mean_squared_error: 0.6815
Epoch 79/250
540/540 [==============================] - 1s 2ms/step - loss: 6.2008 - mse: 0.4921 - mae: 0.2778 - root_mean_squared_error: 0.7015 - val_loss: 6.2569 - val_mse: 0.6732 - val_mae: 0.3592 - val_root_mean_squared_error: 0.8205
Epoch 80/250
540/540 [==============================] - 1s 2ms/step - loss: 6.0714 - mse: 0.4218 - mae: 0.2568 - root_mean_squared_error: 0.6495 - val_loss: 6.7281 - val_mse: 1.2256 - val_mae: 0.4559 - val_root_mean_squared_error: 1.1071
Epoch 81/250
540/540 [==============================] - 1s 2ms/step - loss: 5.9419 - mse: 0.3521 - mae: 0.2358 - root_mean_squared_error: 0.5934 - val_loss: 5.9777 - val_mse: 0.4975 - val_mae: 0.3084 - val_root_mean_squared_error: 0.7053
Epoch 82/250
540/540 [==============================] - 1s 2ms/step - loss: 6.0251 - mse: 0.4952 - mae: 0.2729 - root_mean_squared_error: 0.7037 - val_loss: 5.9376 - val_mse: 0.5204 - val_mae: 0.3236 - val_root_mean_squared_error: 0.7214
Epoch 83/250
540/540 [==============================] - 1s 2ms/step - loss: 5.8879 - mse: 0.4147 - mae: 0.2551 - root_mean_squared_error: 0.6440 - val_loss: 5.7788 - val_mse: 0.3914 - val_mae: 0.2565 - val_root_mean_squared_error: 0.6256
Epoch 84/250
540/540 [==============================] - 1s 2ms/step - loss: 5.7933 - mse: 0.3773 - mae: 0.2498 - root_mean_squared_error: 0.6143 - val_loss: 5.7016 - val_mse: 0.3578 - val_mae: 0.2298 - val_root_mean_squared_error: 0.5981
Epoch 85/250
540/540 [==============================] - 1s 2ms/step - loss: 5.8206 - mse: 0.4600 - mae: 0.2706 - root_mean_squared_error: 0.6783 - val_loss: 5.7820 - val_mse: 0.4368 - val_mae: 0.2583 - val_root_mean_squared_error: 0.6609
Epoch 86/250
540/540 [==============================] - 1s 2ms/step - loss: 5.7371 - mse: 0.4284 - mae: 0.2641 - root_mean_squared_error: 0.6545 - val_loss: 5.5327 - val_mse: 0.2896 - val_mae: 0.2274 - val_root_mean_squared_error: 0.5381
Epoch 87/250
540/540 [==============================] - 1s 2ms/step - loss: 5.6258 - mse: 0.3696 - mae: 0.2407 - root_mean_squared_error: 0.6080 - val_loss: 5.7453 - val_mse: 0.4897 - val_mae: 0.2861 - val_root_mean_squared_error: 0.6998
Epoch 88/250
540/540 [==============================] - 1s 2ms/step - loss: 5.5883 - mse: 0.3853 - mae: 0.2496 - root_mean_squared_error: 0.6207 - val_loss: 5.4942 - val_mse: 0.3312 - val_mae: 0.2402 - val_root_mean_squared_error: 0.5755
Epoch 89/250
540/540 [==============================] - 1s 2ms/step - loss: 5.6364 - mse: 0.4852 - mae: 0.2719 - root_mean_squared_error: 0.6966 - val_loss: 5.5172 - val_mse: 0.3665 - val_mae: 0.2613 - val_root_mean_squared_error: 0.6054
Epoch 90/250
540/540 [==============================] - 1s 2ms/step - loss: 5.4875 - mse: 0.3831 - mae: 0.2513 - root_mean_squared_error: 0.6189 - val_loss: 5.2253 - val_mse: 0.1610 - val_mae: 0.1708 - val_root_mean_squared_error: 0.4012
Epoch 91/250
540/540 [==============================] - 1s 2ms/step - loss: 5.4768 - mse: 0.4177 - mae: 0.2571 - root_mean_squared_error: 0.6463 - val_loss: 6.2598 - val_mse: 1.3272 - val_mae: 0.4559 - val_root_mean_squared_error: 1.1521
Epoch 92/250
540/540 [==============================] - 1s 2ms/step - loss: 5.4680 - mse: 0.4526 - mae: 0.2679 - root_mean_squared_error: 0.6728 - val_loss: 5.9120 - val_mse: 0.9637 - val_mae: 0.3999 - val_root_mean_squared_error: 0.9817
Epoch 93/250
540/540 [==============================] - 1s 2ms/step - loss: 5.4031 - mse: 0.4305 - mae: 0.2593 - root_mean_squared_error: 0.6561 - val_loss: 5.1948 - val_mse: 0.2422 - val_mae: 0.1966 - val_root_mean_squared_error: 0.4922
Epoch 94/250
540/540 [==============================] - 1s 2ms/step - loss: 5.3235 - mse: 0.3939 - mae: 0.2496 - root_mean_squared_error: 0.6276 - val_loss: 5.8064 - val_mse: 0.8728 - val_mae: 0.3707 - val_root_mean_squared_error: 0.9342
Epoch 95/250
540/540 [==============================] - 1s 2ms/step - loss: 5.2667 - mse: 0.3802 - mae: 0.2435 - root_mean_squared_error: 0.6166 - val_loss: 5.0434 - val_mse: 0.1968 - val_mae: 0.1768 - val_root_mean_squared_error: 0.4437
Epoch 96/250
540/540 [==============================] - 1s 2ms/step - loss: 5.2332 - mse: 0.3888 - mae: 0.2498 - root_mean_squared_error: 0.6236 - val_loss: 5.7086 - val_mse: 0.8369 - val_mae: 0.3923 - val_root_mean_squared_error: 0.9148
Epoch 97/250
540/540 [==============================] - 1s 2ms/step - loss: 5.2019 - mse: 0.3983 - mae: 0.2490 - root_mean_squared_error: 0.6311 - val_loss: 5.4899 - val_mse: 0.7933 - val_mae: 0.3856 - val_root_mean_squared_error: 0.8906
Epoch 98/250
540/540 [==============================] - 1s 2ms/step - loss: 5.1181 - mse: 0.3554 - mae: 0.2377 - root_mean_squared_error: 0.5961 - val_loss: 5.0858 - val_mse: 0.3984 - val_mae: 0.2553 - val_root_mean_squared_error: 0.6312
Epoch 99/250
540/540 [==============================] - 1s 2ms/step - loss: 5.1389 - mse: 0.4173 - mae: 0.2551 - root_mean_squared_error: 0.6460 - val_loss: 5.2886 - val_mse: 0.5610 - val_mae: 0.3189 - val_root_mean_squared_error: 0.7490
Epoch 100/250
540/540 [==============================] - 1s 2ms/step - loss: 5.0873 - mse: 0.4043 - mae: 0.2475 - root_mean_squared_error: 0.6358 - val_loss: 5.1863 - val_mse: 0.5050 - val_mae: 0.2780 - val_root_mean_squared_error: 0.7107
Epoch 101/250
540/540 [==============================] - 1s 2ms/step - loss: 5.0254 - mse: 0.3806 - mae: 0.2419 - root_mean_squared_error: 0.6169 - val_loss: 5.0882 - val_mse: 0.5355 - val_mae: 0.3284 - val_root_mean_squared_error: 0.7318
Epoch 102/250
540/540 [==============================] - 1s 2ms/step - loss: 4.9725 - mse: 0.3645 - mae: 0.2406 - root_mean_squared_error: 0.6038 - val_loss: 4.7815 - val_mse: 0.1957 - val_mae: 0.1861 - val_root_mean_squared_error: 0.4424
Epoch 103/250
540/540 [==============================] - 1s 2ms/step - loss: 4.9133 - mse: 0.3432 - mae: 0.2313 - root_mean_squared_error: 0.5859 - val_loss: 4.7244 - val_mse: 0.1793 - val_mae: 0.1778 - val_root_mean_squared_error: 0.4234
Epoch 104/250
540/540 [==============================] - 1s 2ms/step - loss: 4.9432 - mse: 0.4097 - mae: 0.2563 - root_mean_squared_error: 0.6401 - val_loss: 4.9351 - val_mse: 0.4538 - val_mae: 0.2797 - val_root_mean_squared_error: 0.6736
Epoch 105/250
540/540 [==============================] - 1s 2ms/step - loss: 4.9056 - mse: 0.4057 - mae: 0.2469 - root_mean_squared_error: 0.6369 - val_loss: 5.0178 - val_mse: 0.5316 - val_mae: 0.2600 - val_root_mean_squared_error: 0.7291
Epoch 106/250
540/540 [==============================] - 1s 2ms/step - loss: 4.8508 - mse: 0.3838 - mae: 0.2396 - root_mean_squared_error: 0.6195 - val_loss: 4.7789 - val_mse: 0.3253 - val_mae: 0.2370 - val_root_mean_squared_error: 0.5703
Epoch 107/250
540/540 [==============================] - 1s 2ms/step - loss: 4.9144 - mse: 0.4792 - mae: 0.2572 - root_mean_squared_error: 0.6922 - val_loss: 4.5424 - val_mse: 0.1338 - val_mae: 0.1439 - val_root_mean_squared_error: 0.3658
Epoch 108/250
540/540 [==============================] - 1s 2ms/step - loss: 4.7197 - mse: 0.3161 - mae: 0.2252 - root_mean_squared_error: 0.5622 - val_loss: 4.6717 - val_mse: 0.3117 - val_mae: 0.2276 - val_root_mean_squared_error: 0.5583
Epoch 109/250
540/540 [==============================] - 1s 2ms/step - loss: 4.7881 - mse: 0.4155 - mae: 0.2502 - root_mean_squared_error: 0.6446 - val_loss: 4.5095 - val_mse: 0.1829 - val_mae: 0.1837 - val_root_mean_squared_error: 0.4276
Epoch 110/250
540/540 [==============================] - 1s 2ms/step - loss: 4.6894 - mse: 0.3480 - mae: 0.2282 - root_mean_squared_error: 0.5899 - val_loss: 4.4796 - val_mse: 0.1947 - val_mae: 0.1922 - val_root_mean_squared_error: 0.4413
Epoch 111/250
540/540 [==============================] - 1s 2ms/step - loss: 4.7387 - mse: 0.4280 - mae: 0.2469 - root_mean_squared_error: 0.6542 - val_loss: 4.5026 - val_mse: 0.2251 - val_mae: 0.1944 - val_root_mean_squared_error: 0.4744
Epoch 112/250
540/540 [==============================] - 1s 2ms/step - loss: 4.5667 - mse: 0.2864 - mae: 0.2161 - root_mean_squared_error: 0.5352 - val_loss: 4.5317 - val_mse: 0.2861 - val_mae: 0.2226 - val_root_mean_squared_error: 0.5348
Epoch 113/250
540/540 [==============================] - 1s 2ms/step - loss: 4.5678 - mse: 0.3191 - mae: 0.2226 - root_mean_squared_error: 0.5649 - val_loss: 4.5308 - val_mse: 0.3413 - val_mae: 0.2329 - val_root_mean_squared_error: 0.5842
Epoch 114/250
540/540 [==============================] - 1s 2ms/step - loss: 4.5963 - mse: 0.3793 - mae: 0.2466 - root_mean_squared_error: 0.6159 - val_loss: 4.4253 - val_mse: 0.2617 - val_mae: 0.2101 - val_root_mean_squared_error: 0.5116
Epoch 115/250
540/540 [==============================] - 1s 2ms/step - loss: 4.5272 - mse: 0.3394 - mae: 0.2293 - root_mean_squared_error: 0.5825 - val_loss: 4.9191 - val_mse: 0.7791 - val_mae: 0.3372 - val_root_mean_squared_error: 0.8827
Epoch 116/250
540/540 [==============================] - 1s 2ms/step - loss: 4.5759 - mse: 0.4168 - mae: 0.2546 - root_mean_squared_error: 0.6456 - val_loss: 4.4843 - val_mse: 0.3823 - val_mae: 0.2421 - val_root_mean_squared_error: 0.6183
Epoch 117/250
540/540 [==============================] - 1s 2ms/step - loss: 4.4722 - mse: 0.3415 - mae: 0.2315 - root_mean_squared_error: 0.5844 - val_loss: 4.5821 - val_mse: 0.4633 - val_mae: 0.2814 - val_root_mean_squared_error: 0.6806
Epoch 118/250
540/540 [==============================] - 1s 2ms/step - loss: 4.6812 - mse: 0.5770 - mae: 0.2744 - root_mean_squared_error: 0.7596 - val_loss: 4.5972 - val_mse: 0.5519 - val_mae: 0.3201 - val_root_mean_squared_error: 0.7429
Epoch 119/250
540/540 [==============================] - 1s 2ms/step - loss: 4.3644 - mse: 0.2841 - mae: 0.2146 - root_mean_squared_error: 0.5330 - val_loss: 4.1912 - val_mse: 0.1431 - val_mae: 0.1609 - val_root_mean_squared_error: 0.3783
Epoch 120/250
540/540 [==============================] - 1s 2ms/step - loss: 4.3290 - mse: 0.2756 - mae: 0.2128 - root_mean_squared_error: 0.5249 - val_loss: 4.2275 - val_mse: 0.1893 - val_mae: 0.1732 - val_root_mean_squared_error: 0.4351
Epoch 121/250
540/540 [==============================] - 1s 2ms/step - loss: 4.3619 - mse: 0.3365 - mae: 0.2269 - root_mean_squared_error: 0.5801 - val_loss: 4.1629 - val_mse: 0.1607 - val_mae: 0.1574 - val_root_mean_squared_error: 0.4009
Epoch 122/250
540/540 [==============================] - 1s 2ms/step - loss: 4.3295 - mse: 0.3306 - mae: 0.2272 - root_mean_squared_error: 0.5750 - val_loss: 4.1275 - val_mse: 0.1654 - val_mae: 0.1617 - val_root_mean_squared_error: 0.4067
Epoch 123/250
540/540 [==============================] - 1s 2ms/step - loss: 4.2352 - mse: 0.2631 - mae: 0.2060 - root_mean_squared_error: 0.5129 - val_loss: 4.1286 - val_mse: 0.1910 - val_mae: 0.1753 - val_root_mean_squared_error: 0.4370
Epoch 124/250
540/540 [==============================] - 1s 2ms/step - loss: 4.3421 - mse: 0.3959 - mae: 0.2411 - root_mean_squared_error: 0.6292 - val_loss: 4.1651 - val_mse: 0.2265 - val_mae: 0.2008 - val_root_mean_squared_error: 0.4759
Epoch 125/250
540/540 [==============================] - 1s 2ms/step - loss: 4.2492 - mse: 0.3291 - mae: 0.2263 - root_mean_squared_error: 0.5737 - val_loss: 4.0926 - val_mse: 0.2101 - val_mae: 0.1800 - val_root_mean_squared_error: 0.4584
Epoch 126/250
540/540 [==============================] - 1s 2ms/step - loss: 4.5801 - mse: 0.6862 - mae: 0.2884 - root_mean_squared_error: 0.8284 - val_loss: 4.4119 - val_mse: 0.5896 - val_mae: 0.3123 - val_root_mean_squared_error: 0.7679
Epoch 127/250
540/540 [==============================] - 1s 2ms/step - loss: 4.2744 - mse: 0.4010 - mae: 0.2439 - root_mean_squared_error: 0.6332 - val_loss: 4.1469 - val_mse: 0.3071 - val_mae: 0.2295 - val_root_mean_squared_error: 0.5542
Epoch 128/250
540/540 [==============================] - 1s 2ms/step - loss: 4.2015 - mse: 0.3523 - mae: 0.2210 - root_mean_squared_error: 0.5936 - val_loss: 3.9529 - val_mse: 0.1392 - val_mae: 0.1531 - val_root_mean_squared_error: 0.3731
Epoch 129/250
540/540 [==============================] - 1s 2ms/step - loss: 4.1857 - mse: 0.3605 - mae: 0.2358 - root_mean_squared_error: 0.6004 - val_loss: 3.9667 - val_mse: 0.1664 - val_mae: 0.1602 - val_root_mean_squared_error: 0.4079
Epoch 130/250
540/540 [==============================] - 1s 2ms/step - loss: 4.1783 - mse: 0.3764 - mae: 0.2408 - root_mean_squared_error: 0.6135 - val_loss: 4.0264 - val_mse: 0.2305 - val_mae: 0.1930 - val_root_mean_squared_error: 0.4801
Epoch 131/250
540/540 [==============================] - 1s 2ms/step - loss: 4.0979 - mse: 0.3185 - mae: 0.2236 - root_mean_squared_error: 0.5644 - val_loss: 3.9862 - val_mse: 0.2304 - val_mae: 0.1919 - val_root_mean_squared_error: 0.4800
Epoch 132/250
540/540 [==============================] - 1s 2ms/step - loss: 4.0605 - mse: 0.3043 - mae: 0.2198 - root_mean_squared_error: 0.5516 - val_loss: 3.8843 - val_mse: 0.1539 - val_mae: 0.1567 - val_root_mean_squared_error: 0.3923
Epoch 133/250
540/540 [==============================] - 1s 2ms/step - loss: 4.0958 - mse: 0.3618 - mae: 0.2370 - root_mean_squared_error: 0.6015 - val_loss: 3.8768 - val_mse: 0.1583 - val_mae: 0.1648 - val_root_mean_squared_error: 0.3978
Epoch 134/250
540/540 [==============================] - 1s 2ms/step - loss: 4.1058 - mse: 0.3939 - mae: 0.2457 - root_mean_squared_error: 0.6276 - val_loss: 3.9714 - val_mse: 0.3171 - val_mae: 0.2455 - val_root_mean_squared_error: 0.5631
Epoch 135/250
540/540 [==============================] - 1s 2ms/step - loss: 3.9302 - mse: 0.2408 - mae: 0.1950 - root_mean_squared_error: 0.4907 - val_loss: 4.0415 - val_mse: 0.3758 - val_mae: 0.2418 - val_root_mean_squared_error: 0.6130
Epoch 136/250
540/540 [==============================] - 1s 2ms/step - loss: 4.1615 - mse: 0.4943 - mae: 0.2566 - root_mean_squared_error: 0.7031 - val_loss: 3.8137 - val_mse: 0.1738 - val_mae: 0.1647 - val_root_mean_squared_error: 0.4169
Epoch 137/250
540/540 [==============================] - 1s 2ms/step - loss: 4.0388 - mse: 0.3884 - mae: 0.2222 - root_mean_squared_error: 0.6232 - val_loss: 4.0448 - val_mse: 0.4482 - val_mae: 0.2882 - val_root_mean_squared_error: 0.6695
Epoch 138/250
540/540 [==============================] - 1s 2ms/step - loss: 3.9999 - mse: 0.3715 - mae: 0.2316 - root_mean_squared_error: 0.6095 - val_loss: 3.8229 - val_mse: 0.2096 - val_mae: 0.1953 - val_root_mean_squared_error: 0.4578
Epoch 139/250
540/540 [==============================] - 1s 2ms/step - loss: 3.9272 - mse: 0.3204 - mae: 0.2218 - root_mean_squared_error: 0.5660 - val_loss: 3.7272 - val_mse: 0.1487 - val_mae: 0.1521 - val_root_mean_squared_error: 0.3856
Epoch 140/250
540/540 [==============================] - 1s 2ms/step - loss: 3.8631 - mse: 0.2763 - mae: 0.2056 - root_mean_squared_error: 0.5256 - val_loss: 3.8664 - val_mse: 0.2950 - val_mae: 0.2052 - val_root_mean_squared_error: 0.5432
Epoch 141/250
540/540 [==============================] - 1s 2ms/step - loss: 3.8906 - mse: 0.3243 - mae: 0.2241 - root_mean_squared_error: 0.5695 - val_loss: 3.9267 - val_mse: 0.3682 - val_mae: 0.2478 - val_root_mean_squared_error: 0.6068
Epoch 142/250
540/540 [==============================] - 1s 2ms/step - loss: 3.8848 - mse: 0.3375 - mae: 0.2286 - root_mean_squared_error: 0.5809 - val_loss: 3.6411 - val_mse: 0.1198 - val_mae: 0.1400 - val_root_mean_squared_error: 0.3461
Epoch 143/250
540/540 [==============================] - 1s 2ms/step - loss: 3.8828 - mse: 0.3549 - mae: 0.2357 - root_mean_squared_error: 0.5957 - val_loss: 3.6975 - val_mse: 0.2113 - val_mae: 0.1907 - val_root_mean_squared_error: 0.4596
Epoch 144/250
540/540 [==============================] - 1s 2ms/step - loss: 3.7890 - mse: 0.2809 - mae: 0.2078 - root_mean_squared_error: 0.5300 - val_loss: 4.2995 - val_mse: 0.8703 - val_mae: 0.3765 - val_root_mean_squared_error: 0.9329
Epoch 145/250
540/540 [==============================] - 1s 2ms/step - loss: 3.7872 - mse: 0.2982 - mae: 0.2133 - root_mean_squared_error: 0.5460 - val_loss: 3.6158 - val_mse: 0.1451 - val_mae: 0.1603 - val_root_mean_squared_error: 0.3809
Epoch 146/250
540/540 [==============================] - 1s 2ms/step - loss: 3.9498 - mse: 0.4784 - mae: 0.2555 - root_mean_squared_error: 0.6916 - val_loss: 3.6555 - val_mse: 0.2230 - val_mae: 0.1920 - val_root_mean_squared_error: 0.4723
Epoch 147/250
540/540 [==============================] - 1s 2ms/step - loss: 3.7550 - mse: 0.3021 - mae: 0.2165 - root_mean_squared_error: 0.5496 - val_loss: 3.6587 - val_mse: 0.2259 - val_mae: 0.1953 - val_root_mean_squared_error: 0.4753
Epoch 148/250
540/540 [==============================] - 1s 2ms/step - loss: 3.7219 - mse: 0.2885 - mae: 0.2077 - root_mean_squared_error: 0.5371 - val_loss: 3.7181 - val_mse: 0.2952 - val_mae: 0.2230 - val_root_mean_squared_error: 0.5433
Epoch 149/250
540/540 [==============================] - 1s 2ms/step - loss: 3.8221 - mse: 0.4068 - mae: 0.2404 - root_mean_squared_error: 0.6378 - val_loss: 3.5868 - val_mse: 0.1966 - val_mae: 0.1667 - val_root_mean_squared_error: 0.4434
Epoch 150/250
540/540 [==============================] - 1s 2ms/step - loss: 3.7224 - mse: 0.3252 - mae: 0.2176 - root_mean_squared_error: 0.5702 - val_loss: 3.5662 - val_mse: 0.1803 - val_mae: 0.1752 - val_root_mean_squared_error: 0.4246
Epoch 151/250
540/540 [==============================] - 1s 2ms/step - loss: 3.7275 - mse: 0.3484 - mae: 0.2291 - root_mean_squared_error: 0.5903 - val_loss: 3.7620 - val_mse: 0.3838 - val_mae: 0.2631 - val_root_mean_squared_error: 0.6195
Epoch 152/250
540/540 [==============================] - 1s 2ms/step - loss: 3.6881 - mse: 0.3262 - mae: 0.2255 - root_mean_squared_error: 0.5711 - val_loss: 3.6715 - val_mse: 0.3187 - val_mae: 0.2251 - val_root_mean_squared_error: 0.5646
Epoch 153/250
540/540 [==============================] - 1s 2ms/step - loss: 3.6218 - mse: 0.2769 - mae: 0.2084 - root_mean_squared_error: 0.5262 - val_loss: 3.5098 - val_mse: 0.2082 - val_mae: 0.1793 - val_root_mean_squared_error: 0.4563
Epoch 154/250
540/540 [==============================] - 1s 2ms/step - loss: 3.6345 - mse: 0.3071 - mae: 0.2208 - root_mean_squared_error: 0.5541 - val_loss: 4.1596 - val_mse: 0.9031 - val_mae: 0.3964 - val_root_mean_squared_error: 0.9503
Epoch 155/250
540/540 [==============================] - 1s 2ms/step - loss: 3.6086 - mse: 0.2975 - mae: 0.2167 - root_mean_squared_error: 0.5454 - val_loss: 3.8472 - val_mse: 0.5467 - val_mae: 0.2699 - val_root_mean_squared_error: 0.7394
Epoch 156/250
540/540 [==============================] - 1s 2ms/step - loss: 3.6131 - mse: 0.3196 - mae: 0.2198 - root_mean_squared_error: 0.5653 - val_loss: 3.4201 - val_mse: 0.1514 - val_mae: 0.1576 - val_root_mean_squared_error: 0.3892
Epoch 157/250
540/540 [==============================] - 1s 2ms/step - loss: 3.6263 - mse: 0.3491 - mae: 0.2289 - root_mean_squared_error: 0.5908 - val_loss: 3.9536 - val_mse: 0.7211 - val_mae: 0.2787 - val_root_mean_squared_error: 0.8492
Epoch 158/250
540/540 [==============================] - 1s 2ms/step - loss: 3.6360 - mse: 0.3737 - mae: 0.2324 - root_mean_squared_error: 0.6113 - val_loss: 3.3798 - val_mse: 0.1485 - val_mae: 0.1518 - val_root_mean_squared_error: 0.3854
Epoch 159/250
540/540 [==============================] - 1s 2ms/step - loss: 3.5608 - mse: 0.3146 - mae: 0.2207 - root_mean_squared_error: 0.5609 - val_loss: 3.5663 - val_mse: 0.3294 - val_mae: 0.2233 - val_root_mean_squared_error: 0.5739
Epoch 160/250
540/540 [==============================] - 1s 2ms/step - loss: 3.5259 - mse: 0.2947 - mae: 0.2133 - root_mean_squared_error: 0.5429 - val_loss: 3.5337 - val_mse: 0.3052 - val_mae: 0.2292 - val_root_mean_squared_error: 0.5525
Epoch 161/250
540/540 [==============================] - 1s 2ms/step - loss: 3.5079 - mse: 0.2922 - mae: 0.2152 - root_mean_squared_error: 0.5406 - val_loss: 3.4665 - val_mse: 0.2690 - val_mae: 0.2089 - val_root_mean_squared_error: 0.5186
Epoch 162/250
540/540 [==============================] - 1s 2ms/step - loss: 3.5252 - mse: 0.3249 - mae: 0.2218 - root_mean_squared_error: 0.5700 - val_loss: 3.3112 - val_mse: 0.1378 - val_mae: 0.1448 - val_root_mean_squared_error: 0.3712
Epoch 163/250
540/540 [==============================] - 1s 2ms/step - loss: 3.6036 - mse: 0.4166 - mae: 0.2312 - root_mean_squared_error: 0.6454 - val_loss: 3.2702 - val_mse: 0.1121 - val_mae: 0.1343 - val_root_mean_squared_error: 0.3348
Epoch 164/250
540/540 [==============================] - 1s 2ms/step - loss: 3.5863 - mse: 0.4139 - mae: 0.2369 - root_mean_squared_error: 0.6433 - val_loss: 3.3204 - val_mse: 0.1572 - val_mae: 0.1555 - val_root_mean_squared_error: 0.3964
Epoch 165/250
540/540 [==============================] - 1s 2ms/step - loss: 3.4866 - mse: 0.3279 - mae: 0.2178 - root_mean_squared_error: 0.5726 - val_loss: 3.2498 - val_mse: 0.1176 - val_mae: 0.1373 - val_root_mean_squared_error: 0.3429
Epoch 166/250
540/540 [==============================] - 1s 2ms/step - loss: 3.4080 - mse: 0.2631 - mae: 0.2025 - root_mean_squared_error: 0.5129 - val_loss: 3.2379 - val_mse: 0.1174 - val_mae: 0.1377 - val_root_mean_squared_error: 0.3426
Epoch 167/250
540/540 [==============================] - 1s 2ms/step - loss: 3.4095 - mse: 0.2795 - mae: 0.2090 - root_mean_squared_error: 0.5286 - val_loss: 3.2533 - val_mse: 0.1380 - val_mae: 0.1458 - val_root_mean_squared_error: 0.3715
Epoch 168/250
540/540 [==============================] - 1s 2ms/step - loss: 3.3871 - mse: 0.2718 - mae: 0.2054 - root_mean_squared_error: 0.5213 - val_loss: 3.2264 - val_mse: 0.1410 - val_mae: 0.1501 - val_root_mean_squared_error: 0.3755
Epoch 169/250
540/540 [==============================] - 1s 2ms/step - loss: 3.4986 - mse: 0.3971 - mae: 0.2379 - root_mean_squared_error: 0.6302 - val_loss: 3.2795 - val_mse: 0.2012 - val_mae: 0.1793 - val_root_mean_squared_error: 0.4485
Epoch 170/250
540/540 [==============================] - 1s 2ms/step - loss: 3.3043 - mse: 0.2172 - mae: 0.1868 - root_mean_squared_error: 0.4661 - val_loss: 3.2489 - val_mse: 0.1999 - val_mae: 0.1863 - val_root_mean_squared_error: 0.4471
Epoch 171/250
540/540 [==============================] - 1s 2ms/step - loss: 3.3708 - mse: 0.2983 - mae: 0.2138 - root_mean_squared_error: 0.5462 - val_loss: 3.4958 - val_mse: 0.4705 - val_mae: 0.2670 - val_root_mean_squared_error: 0.6859
Epoch 172/250
540/540 [==============================] - 1s 2ms/step - loss: 3.4956 - mse: 0.4362 - mae: 0.2458 - root_mean_squared_error: 0.6604 - val_loss: 3.1551 - val_mse: 0.1112 - val_mae: 0.1263 - val_root_mean_squared_error: 0.3335
Epoch 173/250
540/540 [==============================] - 1s 2ms/step - loss: 3.2860 - mse: 0.2401 - mae: 0.1909 - root_mean_squared_error: 0.4900 - val_loss: 3.2223 - val_mse: 0.2017 - val_mae: 0.1829 - val_root_mean_squared_error: 0.4491
Epoch 174/250
540/540 [==============================] - 1s 2ms/step - loss: 3.3710 - mse: 0.3379 - mae: 0.2220 - root_mean_squared_error: 0.5813 - val_loss: 3.2505 - val_mse: 0.2287 - val_mae: 0.1757 - val_root_mean_squared_error: 0.4782
Epoch 175/250
540/540 [==============================] - 1s 2ms/step - loss: 3.2900 - mse: 0.2710 - mae: 0.2054 - root_mean_squared_error: 0.5206 - val_loss: 3.2190 - val_mse: 0.2092 - val_mae: 0.1876 - val_root_mean_squared_error: 0.4574
Epoch 176/250
540/540 [==============================] - 1s 2ms/step - loss: 3.2559 - mse: 0.2508 - mae: 0.1977 - root_mean_squared_error: 0.5008 - val_loss: 3.1417 - val_mse: 0.1652 - val_mae: 0.1609 - val_root_mean_squared_error: 0.4064
Epoch 177/250
540/540 [==============================] - 1s 2ms/step - loss: 3.3186 - mse: 0.3273 - mae: 0.2216 - root_mean_squared_error: 0.5721 - val_loss: 3.2554 - val_mse: 0.3043 - val_mae: 0.2088 - val_root_mean_squared_error: 0.5517
Epoch 178/250
540/540 [==============================] - 1s 2ms/step - loss: 3.2515 - mse: 0.2734 - mae: 0.2073 - root_mean_squared_error: 0.5229 - val_loss: 3.2580 - val_mse: 0.3031 - val_mae: 0.2178 - val_root_mean_squared_error: 0.5506
Epoch 179/250
540/540 [==============================] - 1s 2ms/step - loss: 3.2741 - mse: 0.3091 - mae: 0.2169 - root_mean_squared_error: 0.5560 - val_loss: 3.1631 - val_mse: 0.2369 - val_mae: 0.2007 - val_root_mean_squared_error: 0.4868
Epoch 180/250
540/540 [==============================] - 1s 2ms/step - loss: 3.2261 - mse: 0.2732 - mae: 0.2080 - root_mean_squared_error: 0.5226 - val_loss: 3.1581 - val_mse: 0.2209 - val_mae: 0.1916 - val_root_mean_squared_error: 0.4700
Epoch 181/250
540/540 [==============================] - 1s 2ms/step - loss: 3.3106 - mse: 0.3708 - mae: 0.2238 - root_mean_squared_error: 0.6089 - val_loss: 3.9468 - val_mse: 1.0154 - val_mae: 0.4090 - val_root_mean_squared_error: 1.0077
Epoch 182/250
540/540 [==============================] - 1s 2ms/step - loss: 3.2409 - mse: 0.3122 - mae: 0.2150 - root_mean_squared_error: 0.5587 - val_loss: 3.7147 - val_mse: 0.7680 - val_mae: 0.3809 - val_root_mean_squared_error: 0.8764
Epoch 183/250
540/540 [==============================] - 1s 2ms/step - loss: 3.2577 - mse: 0.3415 - mae: 0.2230 - root_mean_squared_error: 0.5844 - val_loss: 3.0503 - val_mse: 0.1575 - val_mae: 0.1596 - val_root_mean_squared_error: 0.3969
Epoch 184/250
540/540 [==============================] - 1s 2ms/step - loss: 3.1441 - mse: 0.2397 - mae: 0.1924 - root_mean_squared_error: 0.4896 - val_loss: 3.0379 - val_mse: 0.1452 - val_mae: 0.1587 - val_root_mean_squared_error: 0.3810
Epoch 185/250
540/540 [==============================] - 1s 2ms/step - loss: 3.1772 - mse: 0.2853 - mae: 0.2092 - root_mean_squared_error: 0.5342 - val_loss: 3.8586 - val_mse: 0.9424 - val_mae: 0.4082 - val_root_mean_squared_error: 0.9708
Epoch 186/250
540/540 [==============================] - 1s 2ms/step - loss: 3.2080 - mse: 0.3264 - mae: 0.2229 - root_mean_squared_error: 0.5713 - val_loss: 3.0217 - val_mse: 0.1622 - val_mae: 0.1610 - val_root_mean_squared_error: 0.4028
Epoch 187/250
540/540 [==============================] - 1s 2ms/step - loss: 3.1376 - mse: 0.2683 - mae: 0.2032 - root_mean_squared_error: 0.5180 - val_loss: 3.0114 - val_mse: 0.1528 - val_mae: 0.1590 - val_root_mean_squared_error: 0.3909
Epoch 188/250
540/540 [==============================] - 1s 2ms/step - loss: 3.1746 - mse: 0.3168 - mae: 0.2193 - root_mean_squared_error: 0.5628 - val_loss: 3.3526 - val_mse: 0.5452 - val_mae: 0.2975 - val_root_mean_squared_error: 0.7384
Epoch 189/250
540/540 [==============================] - 1s 2ms/step - loss: 3.1676 - mse: 0.3209 - mae: 0.2185 - root_mean_squared_error: 0.5665 - val_loss: 3.0723 - val_mse: 0.2416 - val_mae: 0.1871 - val_root_mean_squared_error: 0.4916
Epoch 190/250
540/540 [==============================] - 1s 2ms/step - loss: 3.1032 - mse: 0.2680 - mae: 0.2023 - root_mean_squared_error: 0.5177 - val_loss: 3.2609 - val_mse: 0.4208 - val_mae: 0.2605 - val_root_mean_squared_error: 0.6487
Epoch 191/250
540/540 [==============================] - 1s 2ms/step - loss: 3.1474 - mse: 0.3224 - mae: 0.2225 - root_mean_squared_error: 0.5678 - val_loss: 3.0440 - val_mse: 0.2318 - val_mae: 0.1858 - val_root_mean_squared_error: 0.4815
Epoch 192/250
540/540 [==============================] - 1s 2ms/step - loss: 3.0748 - mse: 0.2619 - mae: 0.1993 - root_mean_squared_error: 0.5118 - val_loss: 2.9494 - val_mse: 0.1678 - val_mae: 0.1629 - val_root_mean_squared_error: 0.4097
Epoch 193/250
540/540 [==============================] - 1s 2ms/step - loss: 3.0442 - mse: 0.2429 - mae: 0.1939 - root_mean_squared_error: 0.4928 - val_loss: 2.9757 - val_mse: 0.1893 - val_mae: 0.1694 - val_root_mean_squared_error: 0.4351
Epoch 194/250
540/540 [==============================] - 1s 2ms/step - loss: 3.1609 - mse: 0.3717 - mae: 0.2338 - root_mean_squared_error: 0.6097 - val_loss: 2.9657 - val_mse: 0.1860 - val_mae: 0.1722 - val_root_mean_squared_error: 0.4312
Epoch 195/250
540/540 [==============================] - 1s 2ms/step - loss: 2.9929 - mse: 0.2141 - mae: 0.1839 - root_mean_squared_error: 0.4627 - val_loss: 3.1650 - val_mse: 0.3933 - val_mae: 0.2583 - val_root_mean_squared_error: 0.6272
Epoch 196/250
540/540 [==============================] - 1s 2ms/step - loss: 3.0590 - mse: 0.2912 - mae: 0.2100 - root_mean_squared_error: 0.5396 - val_loss: 3.0803 - val_mse: 0.3417 - val_mae: 0.2334 - val_root_mean_squared_error: 0.5846
Epoch 197/250
540/540 [==============================] - 1s 2ms/step - loss: 3.0769 - mse: 0.3198 - mae: 0.2188 - root_mean_squared_error: 0.5655 - val_loss: 3.0708 - val_mse: 0.3429 - val_mae: 0.2224 - val_root_mean_squared_error: 0.5855
Epoch 198/250
540/540 [==============================] - 1s 2ms/step - loss: 2.9890 - mse: 0.2435 - mae: 0.1945 - root_mean_squared_error: 0.4934 - val_loss: 2.9888 - val_mse: 0.2738 - val_mae: 0.2232 - val_root_mean_squared_error: 0.5232
Epoch 199/250
540/540 [==============================] - 1s 2ms/step - loss: 3.1091 - mse: 0.3725 - mae: 0.2272 - root_mean_squared_error: 0.6104 - val_loss: 3.0484 - val_mse: 0.3099 - val_mae: 0.2383 - val_root_mean_squared_error: 0.5567
Epoch 200/250
540/540 [==============================] - 1s 2ms/step - loss: 3.0121 - mse: 0.2870 - mae: 0.2065 - root_mean_squared_error: 0.5358 - val_loss: 3.2499 - val_mse: 0.5719 - val_mae: 0.3213 - val_root_mean_squared_error: 0.7563
Epoch 201/250
540/540 [==============================] - 1s 2ms/step - loss: 3.0139 - mse: 0.2997 - mae: 0.2105 - root_mean_squared_error: 0.5474 - val_loss: 2.9056 - val_mse: 0.2061 - val_mae: 0.1766 - val_root_mean_squared_error: 0.4540
Epoch 202/250
540/540 [==============================] - 1s 2ms/step - loss: 2.9522 - mse: 0.2483 - mae: 0.1961 - root_mean_squared_error: 0.4983 - val_loss: 2.9070 - val_mse: 0.2148 - val_mae: 0.1912 - val_root_mean_squared_error: 0.4635
Epoch 203/250
540/540 [==============================] - 1s 2ms/step - loss: 2.9937 - mse: 0.2994 - mae: 0.2145 - root_mean_squared_error: 0.5472 - val_loss: 2.8574 - val_mse: 0.1729 - val_mae: 0.1762 - val_root_mean_squared_error: 0.4158
Epoch 204/250
540/540 [==============================] - 1s 2ms/step - loss: 3.0009 - mse: 0.3165 - mae: 0.2185 - root_mean_squared_error: 0.5626 - val_loss: 2.9233 - val_mse: 0.2412 - val_mae: 0.1986 - val_root_mean_squared_error: 0.4911
Epoch 205/250
540/540 [==============================] - 1s 2ms/step - loss: 2.9362 - mse: 0.2616 - mae: 0.1995 - root_mean_squared_error: 0.5115 - val_loss: 2.7705 - val_mse: 0.1145 - val_mae: 0.1350 - val_root_mean_squared_error: 0.3384
Epoch 206/250
540/540 [==============================] - 1s 2ms/step - loss: 2.9095 - mse: 0.2455 - mae: 0.1929 - root_mean_squared_error: 0.4955 - val_loss: 3.1148 - val_mse: 0.4931 - val_mae: 0.2650 - val_root_mean_squared_error: 0.7022
Epoch 207/250
540/540 [==============================] - 1s 2ms/step - loss: 3.0305 - mse: 0.3765 - mae: 0.2359 - root_mean_squared_error: 0.6136 - val_loss: 2.8374 - val_mse: 0.2021 - val_mae: 0.1789 - val_root_mean_squared_error: 0.4496
Epoch 208/250
540/540 [==============================] - 1s 2ms/step - loss: 2.8927 - mse: 0.2476 - mae: 0.1953 - root_mean_squared_error: 0.4976 - val_loss: 2.9451 - val_mse: 0.3328 - val_mae: 0.2289 - val_root_mean_squared_error: 0.5769
Epoch 209/250
540/540 [==============================] - 1s 2ms/step - loss: 2.9800 - mse: 0.3436 - mae: 0.2161 - root_mean_squared_error: 0.5862 - val_loss: 3.0530 - val_mse: 0.4620 - val_mae: 0.2746 - val_root_mean_squared_error: 0.6797
Epoch 210/250
540/540 [==============================] - 2s 3ms/step - loss: 2.9261 - mse: 0.2992 - mae: 0.2070 - root_mean_squared_error: 0.5470 - val_loss: 2.7458 - val_mse: 0.1487 - val_mae: 0.1553 - val_root_mean_squared_error: 0.3857
Epoch 211/250
540/540 [==============================] - 2s 3ms/step - loss: 2.9024 - mse: 0.2841 - mae: 0.2040 - root_mean_squared_error: 0.5330 - val_loss: 2.7096 - val_mse: 0.1077 - val_mae: 0.1290 - val_root_mean_squared_error: 0.3281
Epoch 212/250
540/540 [==============================] - 1s 3ms/step - loss: 2.8586 - mse: 0.2511 - mae: 0.1961 - root_mean_squared_error: 0.5011 - val_loss: 2.8529 - val_mse: 0.2655 - val_mae: 0.2010 - val_root_mean_squared_error: 0.5153
Epoch 213/250
540/540 [==============================] - 1s 2ms/step - loss: 2.8404 - mse: 0.2420 - mae: 0.1943 - root_mean_squared_error: 0.4919 - val_loss: 2.7360 - val_mse: 0.1546 - val_mae: 0.1590 - val_root_mean_squared_error: 0.3932
Epoch 214/250
540/540 [==============================] - 1s 2ms/step - loss: 2.9128 - mse: 0.3241 - mae: 0.2208 - root_mean_squared_error: 0.5693 - val_loss: 2.7951 - val_mse: 0.2316 - val_mae: 0.1787 - val_root_mean_squared_error: 0.4813
Epoch 215/250
540/540 [==============================] - 1s 2ms/step - loss: 2.8985 - mse: 0.3187 - mae: 0.2085 - root_mean_squared_error: 0.5646 - val_loss: 2.7106 - val_mse: 0.1607 - val_mae: 0.1666 - val_root_mean_squared_error: 0.4009
Epoch 216/250
540/540 [==============================] - 1s 2ms/step - loss: 2.8982 - mse: 0.3280 - mae: 0.2157 - root_mean_squared_error: 0.5727 - val_loss: 2.8202 - val_mse: 0.2823 - val_mae: 0.2204 - val_root_mean_squared_error: 0.5313
Epoch 217/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7971 - mse: 0.2356 - mae: 0.1900 - root_mean_squared_error: 0.4854 - val_loss: 3.1294 - val_mse: 0.5617 - val_mae: 0.3103 - val_root_mean_squared_error: 0.7494
Epoch 218/250
540/540 [==============================] - 1s 2ms/step - loss: 2.8577 - mse: 0.3049 - mae: 0.2082 - root_mean_squared_error: 0.5522 - val_loss: 2.6471 - val_mse: 0.1220 - val_mae: 0.1438 - val_root_mean_squared_error: 0.3493
Epoch 219/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7613 - mse: 0.2180 - mae: 0.1844 - root_mean_squared_error: 0.4669 - val_loss: 2.6664 - val_mse: 0.1513 - val_mae: 0.1606 - val_root_mean_squared_error: 0.3890
Epoch 220/250
540/540 [==============================] - 1s 2ms/step - loss: 2.8640 - mse: 0.3295 - mae: 0.2171 - root_mean_squared_error: 0.5741 - val_loss: 2.8247 - val_mse: 0.3147 - val_mae: 0.1900 - val_root_mean_squared_error: 0.5610
Epoch 221/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7496 - mse: 0.2244 - mae: 0.1843 - root_mean_squared_error: 0.4737 - val_loss: 2.6581 - val_mse: 0.1587 - val_mae: 0.1622 - val_root_mean_squared_error: 0.3984
Epoch 222/250
540/540 [==============================] - 1s 2ms/step - loss: 2.8552 - mse: 0.3388 - mae: 0.2090 - root_mean_squared_error: 0.5820 - val_loss: 2.9802 - val_mse: 0.4524 - val_mae: 0.2937 - val_root_mean_squared_error: 0.6726
Epoch 223/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7279 - mse: 0.2197 - mae: 0.1844 - root_mean_squared_error: 0.4687 - val_loss: 2.6378 - val_mse: 0.1418 - val_mae: 0.1521 - val_root_mean_squared_error: 0.3765
Epoch 224/250
540/540 [==============================] - 1s 2ms/step - loss: 2.8093 - mse: 0.3096 - mae: 0.2105 - root_mean_squared_error: 0.5564 - val_loss: 2.5707 - val_mse: 0.0886 - val_mae: 0.1173 - val_root_mean_squared_error: 0.2977
Epoch 225/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7844 - mse: 0.2925 - mae: 0.2059 - root_mean_squared_error: 0.5408 - val_loss: 2.6739 - val_mse: 0.2089 - val_mae: 0.1824 - val_root_mean_squared_error: 0.4571
Epoch 226/250
540/540 [==============================] - 1s 2ms/step - loss: 2.8267 - mse: 0.3425 - mae: 0.2171 - root_mean_squared_error: 0.5853 - val_loss: 2.5610 - val_mse: 0.0974 - val_mae: 0.1202 - val_root_mean_squared_error: 0.3121
Epoch 227/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7395 - mse: 0.2630 - mae: 0.1985 - root_mean_squared_error: 0.5128 - val_loss: 2.6175 - val_mse: 0.1516 - val_mae: 0.1555 - val_root_mean_squared_error: 0.3894
Epoch 228/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7776 - mse: 0.3099 - mae: 0.2066 - root_mean_squared_error: 0.5567 - val_loss: 2.6292 - val_mse: 0.1846 - val_mae: 0.1680 - val_root_mean_squared_error: 0.4297
Epoch 229/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7388 - mse: 0.2791 - mae: 0.2032 - root_mean_squared_error: 0.5283 - val_loss: 2.8697 - val_mse: 0.4127 - val_mae: 0.2486 - val_root_mean_squared_error: 0.6425
Epoch 230/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7434 - mse: 0.2922 - mae: 0.2064 - root_mean_squared_error: 0.5406 - val_loss: 2.7409 - val_mse: 0.3187 - val_mae: 0.2122 - val_root_mean_squared_error: 0.5646
Epoch 231/250
540/540 [==============================] - 1s 2ms/step - loss: 2.6669 - mse: 0.2237 - mae: 0.1873 - root_mean_squared_error: 0.4729 - val_loss: 2.9376 - val_mse: 0.5375 - val_mae: 0.3107 - val_root_mean_squared_error: 0.7331
Epoch 232/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7346 - mse: 0.2991 - mae: 0.2118 - root_mean_squared_error: 0.5469 - val_loss: 2.5356 - val_mse: 0.1205 - val_mae: 0.1322 - val_root_mean_squared_error: 0.3471
Epoch 233/250
540/540 [==============================] - 1s 2ms/step - loss: 2.6762 - mse: 0.2497 - mae: 0.1958 - root_mean_squared_error: 0.4997 - val_loss: 2.5918 - val_mse: 0.1802 - val_mae: 0.1631 - val_root_mean_squared_error: 0.4245
Epoch 234/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7160 - mse: 0.2969 - mae: 0.2116 - root_mean_squared_error: 0.5449 - val_loss: 2.6825 - val_mse: 0.2933 - val_mae: 0.2317 - val_root_mean_squared_error: 0.5416
Epoch 235/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7601 - mse: 0.3477 - mae: 0.2225 - root_mean_squared_error: 0.5897 - val_loss: 2.5571 - val_mse: 0.1538 - val_mae: 0.1498 - val_root_mean_squared_error: 0.3922
Epoch 236/250
540/540 [==============================] - 1s 2ms/step - loss: 2.6303 - mse: 0.2261 - mae: 0.1838 - root_mean_squared_error: 0.4755 - val_loss: 3.1011 - val_mse: 0.7478 - val_mae: 0.3837 - val_root_mean_squared_error: 0.8648
Epoch 237/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7109 - mse: 0.3139 - mae: 0.2069 - root_mean_squared_error: 0.5602 - val_loss: 2.7957 - val_mse: 0.3972 - val_mae: 0.2530 - val_root_mean_squared_error: 0.6302
Epoch 238/250
540/540 [==============================] - 1s 2ms/step - loss: 2.6447 - mse: 0.2558 - mae: 0.1979 - root_mean_squared_error: 0.5058 - val_loss: 2.6557 - val_mse: 0.2800 - val_mae: 0.2055 - val_root_mean_squared_error: 0.5291
Epoch 239/250
540/540 [==============================] - 1s 2ms/step - loss: 2.6782 - mse: 0.2970 - mae: 0.2058 - root_mean_squared_error: 0.5450 - val_loss: 2.5036 - val_mse: 0.1390 - val_mae: 0.1428 - val_root_mean_squared_error: 0.3728
Epoch 240/250
540/540 [==============================] - 1s 2ms/step - loss: 2.5972 - mse: 0.2233 - mae: 0.1845 - root_mean_squared_error: 0.4725 - val_loss: 2.5229 - val_mse: 0.1639 - val_mae: 0.1564 - val_root_mean_squared_error: 0.4049
Epoch 241/250
540/540 [==============================] - 1s 2ms/step - loss: 2.6648 - mse: 0.2988 - mae: 0.2089 - root_mean_squared_error: 0.5466 - val_loss: 3.0991 - val_mse: 0.7785 - val_mae: 0.3331 - val_root_mean_squared_error: 0.8824
Epoch 242/250
540/540 [==============================] - 1s 2ms/step - loss: 2.6429 - mse: 0.2847 - mae: 0.2067 - root_mean_squared_error: 0.5336 - val_loss: 2.8553 - val_mse: 0.4973 - val_mae: 0.2761 - val_root_mean_squared_error: 0.7052
Epoch 243/250
540/540 [==============================] - 1s 2ms/step - loss: 2.6907 - mse: 0.3392 - mae: 0.2256 - root_mean_squared_error: 0.5824 - val_loss: 2.5531 - val_mse: 0.2295 - val_mae: 0.1969 - val_root_mean_squared_error: 0.4791
Epoch 244/250
540/540 [==============================] - 1s 2ms/step - loss: 2.5635 - mse: 0.2203 - mae: 0.1844 - root_mean_squared_error: 0.4693 - val_loss: 2.5029 - val_mse: 0.1784 - val_mae: 0.1625 - val_root_mean_squared_error: 0.4223
Epoch 245/250
540/540 [==============================] - 1s 2ms/step - loss: 2.5848 - mse: 0.2492 - mae: 0.1931 - root_mean_squared_error: 0.4992 - val_loss: 2.4655 - val_mse: 0.1559 - val_mae: 0.1630 - val_root_mean_squared_error: 0.3948
Epoch 246/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7372 - mse: 0.4086 - mae: 0.2382 - root_mean_squared_error: 0.6392 - val_loss: 2.4353 - val_mse: 0.1263 - val_mae: 0.1428 - val_root_mean_squared_error: 0.3554
Epoch 247/250
540/540 [==============================] - 1s 2ms/step - loss: 2.5444 - mse: 0.2225 - mae: 0.1854 - root_mean_squared_error: 0.4717 - val_loss: 2.4457 - val_mse: 0.1486 - val_mae: 0.1587 - val_root_mean_squared_error: 0.3855
Epoch 248/250
540/540 [==============================] - 1s 2ms/step - loss: 2.6252 - mse: 0.3098 - mae: 0.2104 - root_mean_squared_error: 0.5566 - val_loss: 2.5291 - val_mse: 0.2423 - val_mae: 0.1979 - val_root_mean_squared_error: 0.4923
Epoch 249/250
540/540 [==============================] - 1s 2ms/step - loss: 2.6907 - mse: 0.3828 - mae: 0.2009 - root_mean_squared_error: 0.6187 - val_loss: 6.2506 - val_mse: 3.8981 - val_mae: 0.7622 - val_root_mean_squared_error: 1.9744
Epoch 250/250
540/540 [==============================] - 1s 2ms/step - loss: 2.7630 - mse: 0.4578 - mae: 0.2272 - root_mean_squared_error: 0.6766 - val_loss: 2.9224 - val_mse: 0.6088 - val_mae: 0.3302 - val_root_mean_squared_error: 0.7803
In [32]:
plt.plot(history.history['loss'],label="Courbe d'apprentissage")
plt.plot(history.history['val_loss'],label="Loss sur les données de validation")
plt.title("Évolution de la fonction de perte (loss) durant l'entraînement")
plt.xlabel("Itération")
plt.ylabel("Valeur de la fonction de perte")
plt.legend()
plt.yscale('log')
In [33]:
def evaluate(x,y):
    Y = pd.DataFrame(model.predict(x),columns=["co2","co_typ_1","nox","hcnox","ptcl"],index=y_test.index)
    YY = (Y - Y.mean()) / Y.std()

    yy = (y - y.mean())/y.std()

    return pd.DataFrame((((YY - yy)**2).mean()),columns=["mse"]).transpose()

Performance du réseau de neurones

Nous proposons ici d'utiliser la même méthode d'évaluation que celle du modèle linéaire afin de comparer les deux méthodes. Voici donc un tableau récapitulatif de ce que l'on obtient:

In [34]:
evaluate(X_test,y_test)
Out[34]:
co2 co_typ_1 nox hcnox ptcl
mse 0.001277 0.52363 0.637408 0.88016 2.172733

Le réseau de neurones serait donc plus performant dans la prédiction des émissions de co2 que dans la prédiction des essais nox, hcnox et ptcl. On remarquera que le réseau de neurones est par ailleurs meilleur dans la prédiction des émissions de monoxyde de carbone (co_typ_1) que dans celles des nox et hcnox malgré une corrélation plus forte de ces variables avec les variables explicatives. Par ailleurs Les émissions de particules restent difficile à prédire avec ce dataset dans la mesure où elles sont relativement faiblement liées aux variables explicatives.

Plus généralement, le réseau de neurones actuellement conçu est moins performant que les modèles linéaires (cf. tableau de la section "Une autre évaluation"). Une possibilité de développement de cette activité serait donc de chercher si le modèle neuronal ne pourrait pas être amélioré (voir si des meilleurs hyperparamètres sont possibles ou si la méthodologie pourrait être améliorée; tester des modèles plus complexes ou d'autres approches...).