Scénario de test & Cas d'usage
Classification utilisant des réseaux bayésiens.
Découvrir toutes les actions de bayesianNetClassifierCréation d'une table de relevés de capteurs avec des valeurs manquantes intentionnelles pour des variables numériques et catégorielles.
| 1 | DATA 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; |
| 18 | RUN; |
| 1 | PROC CASUTIL; |
| 2 | load DATA=casuser.capteurs_pannes outcaslib='casuser' casout='capteurs_pannes' replace; |
| 3 | RUN; |
| 4 | QUIT; |
| 1 | PROC 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'}; |
| 12 | RUN; |
| 13 | QUIT; |
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'.