dataPreprocess

binning

##set_datapreprocess

Description

L'action binning permet de transformer des 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. numériques continues en 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. discrètes par intervalles (binning). C'est l'outil idéal pour simplifier vos données avant une modélisationProcessus de création de structures mathématiques ou statistiques sur SAS Viya pour prédire des comportements, classifier des données ou identifier des tendances à partir de jeux de données CAS. ou pour créer des groupes homogènes. Imaginez que vous triez vos pièces de monnaie par valeur plutôt que de peser chaque pièce individuellement : c'est exactement ce que fait le binning pour vos données ! Cette action supporte plusieurs méthodes comme les seaux de largeur égale (BUCKET), les quantilesLes quantiles sont des valeurs divisant un jeu de données trié en intervalles égaux. Ils permettent d'analyser la distribution et la dispersion des données (ex: quartiles pour des segments de 25%). (QUANTILE) ou des points de coupure personnalisés (CUTPTS).

Syntaxe Officielle
dataPreprocess.binning /
binEnds={double-1, ...},
binMapping="LEFT" | "RIGHT",
binMissing=true | false,
binStarts={double-1, ...},
binWidths={double-1, ...},
casOut={casouttable},
casOutBinDetails={casouttable},
code={codegen},
copyAllVars=true | false,
copyVars={"variable-name-1", ...},
cutPoints={double-1, ...},
freq="variable-name",
fuzzyCompare=double,
includeInputVars=true | false,
inputs={{casinvardesc-1}, ...},
method="BUCKET" | "CUTPTS" | "QUANTILE",
nBinsArray={integer-1, ...},
table={castable},
weight="variable-name";

Paramètres Clés

Nom du paramètre Description
table Désigne la table CAS d'entrée contenant les variables à traiter.
inputs Liste des variables numériques à discrétiser. Si vous ne spécifiez rien, l'action pourrait se sentir seule et ne rien faire.
method Définit la technique de binning : 'BUCKET' (largeur égale), 'QUANTILE' (fréquence égale) ou 'CUTPTS' (points personnalisés).
nBinsArray Spécifie le nombre de segments (bins) à créer. Par défaut, SAS en crée 5, parce que c'est un chiffre rond et sympathique.
casOut Spécifie la table CAS de sortie qui contiendra les données scorées (avec les nouvelles variables discrétisées).
casOutBinDetails Génère une table de détails contenant les bornes inférieures, supérieures et les statistiques de chaque segment.
code Permet de générer le code DATA Step correspondant à la transformation pour une utilisation ultérieure hors CAS.
binMapping Définit si la borne appartient au segment de gauche (LEFT) ou de droite (RIGHT). Crucial pour ne pas perdre une donnée sur la frontière !
binMissing Si true, place les valeurs manquantes dans un segment dédié (ID 0). Parce que même les absents ont droit à leur place.
copyVars Liste des variables de la table d'entrée à copier directement dans la table de sortie sans modification.

Préparation des données

Création de données de test pour le binning

Ce code génère une table CAS nommée 'CARS_DATA' basée sur la table classique SASHELP.CARS pour tester les fonctionnalités de discrétisation.

1PROC CAS;
2 TABLE.loadTable / path="cars.sashdat", caslib="Samples", casOut={name="cars_data", replace=true};
3 TABLE.columnInfo / TABLE="cars_data";
4RUN;

Exemples d'utilisation

Binning par défaut (Bucket)

Découpe la variable 'MSRP' (prix) en 5 segments de largeur égale.

1PROC CAS;
2 dataPreprocess.binning /
3 TABLE={name="cars_data"},
4 inputs={{name="MSRP"}},
5 casOut={name="cars_binned", replace=true};
6 TABLE.fetch / TABLE="cars_binned", to=10;
7RUN;
Résultat Attendu :
Une nouvelle table 'cars_binned' contenant une variable 'bin_MSRP' avec des valeurs de 1 à 5.
Transformation complexe avec Quantiles et génération de code

Cet exemple utilise la méthode des quantiles pour diviser le poids (Weight) et la puissance (Horsepower) en 10 groupes, tout en demandant les détails du binning et le code DATA Step.

1PROC CAS;
2 dataPreprocess.binning /
3 TABLE={name="cars_data", where="Horsepower > 100"},
4 method="QUANTILE",
5 nBinsArray={10},
6 inputs={{name="Weight"}, {name="Horsepower"}},
7 binMissing=true,
8 casOut={name="cars_quantile_scored", replace=true},
9 casOutBinDetails={name="bin_details", replace=true},
10 code={casOut={name="bin_code", replace=true}},
11 copyVars={"Make", "Model"};
12 /* Visualisation des détails des segments */
13 TABLE.fetch / TABLE="bin_details";
14 /* Visualisation du code généré */
15 TABLE.fetch / TABLE="bin_code";
16RUN;
Résultat Attendu :
La table 'cars_quantile_scored' contient les variables discrétisées. La table 'bin_details' montre les intervalles exacts pour chaque quantile. La table 'bin_code' contient le code source SAS pour reproduire la logique.