https://data.ademe.fr/datasets/dpe-v2-tertiaire-2
feedback:
la réponse 1 est la bonne question de cours
feedback:
la réponse 1 est la bonne question de cours
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.
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
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
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.
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
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)
ne garder que les échantillons avec un z_score de max 2, supprime 37 échantillons.
ne garder que les échantillons avec un z_score de max 3, supprime 11 échantillons.
ne garder que les échantillons avec un z_score de max 2, supprime 137 échantillons.
ne garder que les échantillons avec un z_score de max 2, supprime 37 échantillons.
df[df.z_emissions > 2].shape 37 df[df.z_emissions > 3].shape 11
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
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 ?
cut ne sert à rien car la plupart des échantillons sont dans un seul intervalle
qcut reparti les échantillons en intervalles qui ont a peu pres le meme nombre d'échantillons
cut reparti les échantillons en intervalles qui ont a peu pres le meme nombre d'échantillons
qcut reparti les échantillons en intervalles d'amplitude sensiblement égales
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
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