Introduction au Machine Learning

Quiz sur l'amélioration des données et la régularisation

Quiz P3

https://data.ademe.fr/datasets/dpe-v2-tertiaire-2


Q1) A quoi sert l’approche data-centric par rapport à une approche model-centric? ————————————————

feedback:

la réponse 1 est la bonne question de cours


Q2) pourquoi faut il toujours donner une valeur au paramètre random_state ————————————————

feedback:

la réponse 1 est la bonne question de cours


Q3) Qu’est-ce que le biais de préjugé dans le contexte des modèles de machine learning ? ————————————————

Réponse 1: Le biais de préjugé dans les modèles de machine learning fait référence à la présence de discriminations injustes dans les résultats du modèle, généralement causées par des biais systémiques dans les données d’entraînement. Atténuer ce biais est essentiel pour garantir des décisions plus équitables et non discriminatoires lorsque ces modèles sont utilisés dans des applications du monde réel.


Nous allons travailler maintenant sur le dataset de l’Ademe, sur le dataset Le Diagnostic de Performance Energétique (DPE). Le site de l’ADEME, Agence de l’environnement et de la maîtrise de l’énergie offre la possibilité d’extraire 10000 échantillons du jeu de données entier.

https://data.ademe.fr/datasets/dpe-v2-tertiaire-2

Le Diagnostic de Performance Énergétique (DPE) renseigne sur la performance énergétique et environnementale d’un logement ou d’un bâtiment, en évaluant sa consommation d’énergie et son impact en matière d’émissions de gaz à effet de serre.

Vous trouverez une extraction du dataset sur le github du cours https://raw.githubusercontent.com/OpenClassrooms-Student-Center/8063076-Initiez-vous-au-Machine-Learning/master/data/ADEME_dpe-v2-tertiaire-2.csv

Ce dataset comporte 64 variables différentes. Nous allons nous concentrer sur les colonnes suivantes

Les établissements recevant du public (ERP) sont des bâtiments, locaux et enceintes dans lesquels des personnes extérieures sont admises. Par exemple, une école, un commerce, un parc d’attractions sont des ERP. Les ERP sont classés en 5 catégories en fonction de leur capacité d’accueil. Les salariés sont comptés avec le public admis dans l’établissement sauf pour la 5e catégorie.


Q4) données manquantes ————————————————

le dataset fait 10000 échantillons en utilisant par exemple df.info() sur les 64 colonnes,

Vous pouvez obtenir la liste des colonnes avec df.columns et le nombre d’échantillons nulles avec df[df[nom_colonne].isna()].shape

combien de variables sont réellement exploitables, cad ont au moins 5000 non nulles

solution

colonnes = cols = [col for col in df.columns if df[df[col].isna()].shape[0] <= 5000 ]

retourne la liste des colonnes ayant plus de 5000 échantillons non nul

cette liste comprend 42 éléments


Q5) comment gérer les données manquantes pour une des variables en particulier ————————————————

La variable “Emission_GES_kgCO2/m²/an” a 4392 échantillons de valeur manquante. soit presque

Quelle serait la meilleure stratégie pour remplacer ces valeurs nulles par des valeurs qui font sens dans le cadre de l’entraînement d’un modèle de ML

Bien que les 3 réponses soient en effet des stratégies de remplacement des valeurs manquantes La meilleure stratégie serait d’estimer la valeur manquante à partir de données corrélées.

prendre la moyenne globale modifierait fortement la distribution de la variable et aurait un impact le modèle

mettre arbitrairement une valeur négative à la place d’une valeur toujours positive aurait aussi un impact néfaste sur la distribution de la variable


Q6) outliers: ————————————————

df.describe retourne le min, max, déviation standard et les percentile des chaque variable numérique.

Faites df.describe() et comparez la ligne min, max et la ligne mean des colonnes. Quelles variables ont de façon certaine une présence d’outliers ? N’hesitez pas a regardez a quoi correspond l’échantillon avec la valeur qui vous semble aberrante pour vérifier si c’est bien le cas

par exemple pour une valeur de l’année de construction de 1300 vous trouverez

df[df[‘Année_construction’] == 1300]

l’adresse Lauzasses de Casteljau (Casteljau) 07460 Berrias-et-Casteljau et de secteur d’activité N : Restaurants et débits de boisson et en regardant sur google maps il pourrait bien dater de l’an 1300!

Le nombre d’occupant maximum est de 292841658.00 soit 292,8 Millions de personnes! La Conso_kWhep/m²/an a un minimum negatif.

La surface utile de Surface_utile 116912.00 m2 correspond à un centre commercial: Centre commercial Belle Epine. Donc possiblement très grand.


Outliers ————————————————

Regardons maintenant les outliers sur la variable ‘Emission_GES_kgCO2/m²/an’

Avant cela, pour simplifier les manipulations , supprimons les valeurs absentes

col = ‘Emission_GES_kgCO2/m²/an’ df = df[~df[col].isna()].copy() df.reset_index(inplace = True, drop = True) Il reste 5608 échantillons


Q7) Z score sur ‘Emission_GES_kgCO2/m²/an’ ————————————————

calculons le z-score pour chaque valeur de cette variable from scipy import stats df[‘z_emissions’] = stats.zscore(df[col])

Quelle affirmation est vrai (2 réponses possibles)

df[df.z_emissions > 2].shape 37 df[df.z_emissions > 3].shape 11


Q8) détection des outliers avec l’IQR ———————————————— Calculez l’IQR sur la variable ‘Emission_GES_kgCO2/m²/an’ avec col = ‘Emission_GES_kgCO2/m²/an’ iqr = np.quantile(df[col], q=[0.25, 0.75])

En reprenant la définition de limite haute et basse du cours

que pouvez vous dire


Q9) Binarisation de la variable ————————————————

Comparez les fonctions de binarisation d’une variable continue pd.cut() et pd.qcut() avec 10 bins pour la variable ‘Emission_GES_kgCO2/m²/an’ pd.cut(df[col], 10) pd.qcut(df[col], 10)

En décomptant le nombre d’éléments par bin avec la fonction value_counts()

par exemple pd.cut(df[col], 10).value_counts()

Que constatez vous ?

response 1 est vraie pd.cut(df[col], 10).value_counts() Emission_GES_kgCO2/m²/an (-3.126, 312.59] 5604 (312.59, 625.18] 1 (1250.36, 1562.95] 1 (1562.95, 1875.54] 1 (2813.31, 3125.9] 1 (625.18, 937.77] 0 (937.77, 1250.36] 0 (1875.54, 2188.13] 0 (2188.13, 2500.72] 0 (2500.72, 2813.31] 0

réponse 2 est aussi vraie les 2 autres réponses inverse cut et qcut

pd.qcut(df[col], 10).value_counts() Emission_GES_kgCO2/m²/an (-0.001, 0.1] 642 (4.3, 6.0] 574 (6.0, 8.0] 567 (40.43, 3125.9] 561 (2.7, 4.3] 560 (10.7, 15.8] 560 (15.8, 24.5] 560 (24.5, 40.43] 558 (8.0, 10.7] 528 (0.1, 2.7] 498


Q10 encodage numérique des variables catégoriques textuelles ————————————————

10 Période_construction 24 Secteur_activité 11 Type_énergie_principale_chauffage

regardons maintenant la variable catégorique Secteur_activité qui prend 24 valeurs différentes

Quelles affirmation sont vraie? (plusieurs réponses possibles)

le one hot encoding ajoute N-1 variables pour une variable qui prend N valeurs et non pas n nouvelles variables.

l’encodage binaire crée P nouvelles variables avec P tel que 2^P > N comme 32 = 2^5 > 24, l’encodage binaire rajouterai 5 nouvelles variables

les valeurs de la variable ne sont pas ordonnées donc la variable n’est pas ordinale. Il ne fait pas sens d’encoder la variable avec une suite d’entier