dataPreprocess

discretize

##set_datapreprocess

Description

L'action discretize effectue une discrétisation supervisée et non supervisée de variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage.. C'est l'outil parfait pour transformer vos variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage. continues en catégories (ou bacs), un peu comme si vous triiez vos chaussettes par taille avant de les ranger. C'est une étape de prétraitement incontournable pour simplifier les modèles de Machine LearningBranche de l'IA utilisant des algorithmes pour apprendre des modèles à partir de données. Il permet d'automatiser des prédictions ou des décisions sans programmation explicite de chaque règle. .

Syntaxe Officielle
proc cas;
dataPreprocess.discretize /
table={name="nom_table", caslib="ma_caslib"}
inputs={"var1", "var2"}
method="BUCKET"
arguments={nBinsArray=5}
casOut={name="table_sortie", replace=true};
quit;

Paramètres Clés

Nom du paramètre Description
table Spécifie la table d'entrée contenant les données à analyser .
inputs La ou les variables continues que vous souhaitez découper en catégories.
method La technique magique de discrétisation à utiliser : BUCKET (largeur égale), QUANTILE (fréquence égale), ou des méthodes supervisées comme WOE, DTREE, MDLP, etc.
arguments Spécifie une liste d'arguments additionnels, comme nBinsArray pour forcer le nombre de bacs ou minNBins pour le minimum.
casOut La table de destination où les résultats (avec les nouvelles variables discrétisées) seront sauvegardés précieusement.

Préparation des données

Création d'un jeu de données de test

Générons un petit jeu de données de patients avec leur taille et leur poids pour tester nos techniques de discrétisation.

1DATA casuser.patients;
2 INPUT id taille poids sexe $;
3 DATALINES;
41 170 65 M
52 180 80 M
63 160 55 F
74 175 70 M
85 165 60 F
96 190 90 M
107 155 50 F
118 185 85 M
12;
13RUN;

Exemples d'utilisation

Discrétisation basique en BUCKET (largeur égale)

On découpe la variable taille en 3 catégories de largeur identique. Une approche simple, efficace et sans prise de tête !

1PROC CAS;
2 dataPreprocess.discretize /
3 TABLE={name="patients", caslib="casuser"}
4 inputs={"taille", "poids"}
5 method="BUCKET"
6 arguments={nBinsArray=3}
7 casOut={name="patients_bucket", caslib="casuser", replace=true};
8QUIT;
Résultat Attendu :
Une table 'patients_bucket' est générée avec de nouvelles variables (préfixées par défaut) contenant les identifiants de bacs pour chaque observation.
Discrétisation Quantile avec renommage personnalisé et détails des bacs

Ici on utilise la méthode QUANTILE (pour avoir autant d'individus dans chaque bac). On personnalise le préfixe de la variable de sortie et on sauvegarde les détails de coupe dans une table séparée pour pouvoir les réutiliser.

1PROC CAS;
2 dataPreprocess.discretize /
3 TABLE={name="patients", caslib="casuser"}
4 inputs={"taille"}
5 method="QUANTILE"
6 arguments={nBinsArray=4}
7 outVarsNamePrefix="Q_"
8 copyVars={"id", "sexe"}
9 casOut={name="patients_quantile", caslib="casuser", replace=true}
10 casOutBinDetails={name="bin_details", caslib="casuser", replace=true};
11QUIT;
Résultat Attendu :
La table 'patients_quantile' contiendra l'id, le sexe et la variable discrétisée 'Q_taille'. La table 'bin_details' fournira les informations précises sur les intervalles calculés (bornes inférieures et supérieures).