Scénario de test & Cas d'usage
Nettoyage, imputation et préparation des données.
Découvrir toutes les actions de dataPreprocessGénération de 100 000 lignes de transactions avec une variable 'Sous_Categorie' suivant une distribution exponentielle (beaucoup de catégories avec peu d'observations).
| 1 | |
| 2 | DATA casuser.ventes_retail; |
| 3 | call streaminit(999); |
| 4 | LENGTH Sous_Categorie $20; |
| 5 | DO i = 1 to 100000; |
| 6 | /* Distribution asymétrique pour créer des modalités rares */ val_id = floor(rand('EXPONENTIAL') * 20); |
| 7 | IF val_id < 5 THEN Sous_Categorie = cat('Cat_Majeure_', val_id); |
| 8 | ELSE Sous_Categorie = cat('Cat_Rare_', val_id, '_', floor(rand('Uniform')*100)); |
| 9 | OUTPUT; |
| 10 | END; |
| 11 | |
| 12 | RUN; |
| 13 |
| 1 | PROC CAS; |
| 2 | dataPreprocess.catTrans |
| 3 | TABLE={name='ventes_retail'} |
| 4 | inputs={'Sous_Categorie'} |
| 5 | method='GROUPRARE' |
| 6 | arguments={preprocessRare=true, rareThresholdPercent=1.0} |
| 7 | casOut={name='ventes_clean', replace=true} |
| 8 | casOutLevelBinMap={name='map_rare', replace=true}; |
| 9 | RUN; |
| 1 | |
| 2 | PROC FREQ |
| 3 | DATA=casuser.ventes_clean; |
| 4 | tables Sous_Categorie / nocum; |
| 5 | |
| 6 | RUN; |
| 7 |
La table de sortie doit montrer une réduction drastique du nombre de valeurs uniques pour 'Sous_Categorie'. Toutes les valeurs 'Cat_Rare_...' apparaissant peu fréquemment doivent être fusionnées dans le groupe '_RARE_'. Les catégories majeures doivent rester distinctes.