bayesianNetClassifier bnet

Scénario Cas Limite : Analyse de Pannes avec Données Manquantes

Scénario de test & Cas d'usage

Contexte Métier

Une entreprise industrielle cherche à prédire les pannes de ses machines à partir de données de capteurs. Cependant, les capteurs sont parfois défaillants, générant des valeurs manquantes dans les données. Le test vise à évaluer la capacité de l'action à construire un modèle robuste malgré ces imperfections de données.
À propos du Set : bayesianNetClassifier

Classification utilisant des réseaux bayésiens.

Découvrir toutes les actions de bayesianNetClassifier
Préparation des Données

Création d'une table de relevés de capteurs avec des valeurs manquantes intentionnelles pour des variables numériques et catégorielles.

Copié !
1DATA casuser.capteurs_pannes;
2 call streaminit(123);
3 DO id_machine = 1 to 500;
4 DO jour = 1 to 10;
5 temperature = 80 + rand('normal', 10);
6 pression = 1000 + rand('normal', 50);
7 etat_filtre = 'Normal';
8 IF rand('uniform') < 0.15 THEN etat_filtre = 'Sature';
9 /* Introduction de valeurs manquantes */
10 IF rand('uniform') < 0.1 THEN temperature = . ; /* Manquant numérique */
11 IF rand('uniform') < 0.05 THEN etat_filtre = ''; /* Manquant catégoriel */
12 /* Cible */
13 panne = 'Non';
14 IF (temperature > 100 or pression > 1100 or etat_filtre='Sature') and rand('uniform') > 0.3 THEN panne = 'Oui';
15 OUTPUT;
16 END;
17 END;
18RUN;

Étapes de réalisation

1
Chargement des données de capteurs dans la session CAS.
Copié !
1PROC CASUTIL;
2 load DATA=casuser.capteurs_pannes outcaslib='casuser' casout='capteurs_pannes' replace;
3RUN;
4QUIT;
2
Exécution de l'action 'bnet' en spécifiant une stratégie de gestion des valeurs manquantes : imputation par la moyenne pour les variables d'intervalle et traitement comme un niveau à part entière pour les nominales.
Copié !
1PROC CAS;
2 ACTION bayesianNetClassifier.bnet /
3 TABLE={name='capteurs_pannes'},
4 target='panne',
5 inputs={{name='temperature'}, {name='pression'}, {name='etat_filtre'}},
6 nominals={{name='panne'}, {name='etat_filtre'}},
7 structures={'NAIVE'},
8 missingInt='IMPUTE', /* Impute la moyenne pour temperature */
9 missingNom='LEVEL', /* Crée un niveau pour les valeurs manquantes de etat_filtre */
10 OUTPUT={casout={name='pannes_scored', replace=true}, copyVars={'id_machine', 'jour'}},
11 display={'ModelInfo', 'Misclassification'};
12RUN;
13QUIT;

Résultat Attendu


L'action s'exécute sans erreur. La table 'ModelInfo' indique que les stratégies 'IMPUTE' et 'LEVEL' ont été appliquées. La table de sortie 'pannes_scored' est créée et contient des prédictions pour toutes les observations initiales, y compris celles qui avaient des valeurs manquantes. Le modèle a appris à utiliser l'absence d'information comme une information en soi pour la variable 'etat_filtre'.