impute
Description
L'action impute du set dataPreprocess est votre baguette magique pour combler les trous (valeurs manquantes) dans vos données. Elle effectue l'imputation de matrice de donnéesStructure de données bidimensionnelle organisée en lignes (observations) et colonnes (variables), stockée en mémoire distribuée (CAS) pour permettre des traitements analytiques haute performance. (variable). Que vous vouliez remplacer les valeurs manquantes par la moyenne, la médiane, un nombre aléatoire (pourquoi pas ?) ou une valeur fixe, cette action s'occupe de tout. Fini les trous dans la raquette de vos modèles prédictifsAlgorithmes entraînés sur SAS Viya pour analyser des données historiques et estimer la probabilité de résultats futurs, facilitant ainsi la prise de décision proactive et automatisée. ! Vous pouvez configurer des méthodes différentes pour les variables continues et nominales.
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| table | La table en entrée contenant les données avec les trous à combler. Ce paramètre est requis. |
| casOut | La table en sortie qui contiendra vos données toutes belles, toutes propres, avec les valeurs imputées. |
| casOutImputeInformation | Une table optionnelle qui documente les résultats de l'imputation (très utile pour l'audit et vérifier ce qui a été fait !). |
| code | Génère le code de scoring (étape DATA SAS) pour répliquer l'imputation magique ailleurs, par exemple en production. |
| inputs | La liste des variables à traiter. Si vous ne mettez rien, il essaiera de tout traiter, un vrai glouton. |
| methodInterval | La méthode pour boucher les trous des variables numériques (continues). Options: MAX, MEAN, MEDIAN, MIDRANGE, MIN, RANDOM, ou VALUE. Par défaut, c'est MEAN (la bonne vieille moyenne). |
| methodNominal | La technique pour les variables qualitatives (nominales). Options: MODE (la valeur la plus fréquente, un grand classique !) ou VALUE. |
| valuesInterval | Si vous avez choisi 'VALUE' pour methodInterval, c'est ici que vous précisez la liste des valeurs numériques à insérer manuellement. |
| valuesNominal | Si vous avez choisi 'VALUE' pour methodNominal, mettez ici vos chaînes de caractères de remplacement. |
| copyAllVars | Si True, on garde toutes les colonnes d'origine dans la table de sortie, même celles qu'on ne touche pas. Fortement conseillé pour ne pas perdre la moitié de sa table ! |
| outVarsNamePrefix | Le préfixe des nouvelles variables imputées. Par défaut c'est 'imp' (comme 'imp_MaVariable'). |
Préparation des données
Création de données trouées
Un petit jeu de données sur des pingouins avec des valeurs manquantes flagrantes pour tester notre imputation.
| 1 | DATA public.pingouins_trous; |
| 2 | INPUT nom $ poids taille espece $; |
| 3 | DATALINES; |
| 4 | Pingu 5.2 45 Empereur |
| 5 | Rico . 30 . |
| 6 | Skipper 4.8 . Adelie |
| 7 | Kowalski 4.5 35 Adelie |
| 8 | ; |
| 9 | RUN; |
Exemples d'utilisation
Imputation basique
On remplace les valeurs numériques manquantes par la moyenne et les valeurs textuelles par le mode (valeur la plus fréquente).
| 1 | PROC CAS; |
| 2 | dataPreprocess.impute / |
| 3 | TABLE={name="pingouins_trous", caslib="public"} |
| 4 | casOut={name="pingouins_repares", caslib="public", replace=True} |
| 5 | inputs={"poids", "taille", "espece"} |
| 6 | methodInterval="MEAN" |
| 7 | methodNominal="MODE" |
| 8 | copyAllVars=True; |
| 9 | RUN; |
| 10 | QUIT; |
Résultat Attendu :
Imputation sur mesure avec table d'informations et génération de code
Ici, on va être maniaque du contrôle : on remplace les poids manquants par une médiane, on garde une trace de ce qu'on fait dans une table d'information, et on exporte le code SAS pour pouvoir le rejouer plus tard ! On va aussi préfixer nos colonnes réparées avec 'fix_'.
| 1 | PROC CAS; |
| 2 | dataPreprocess.impute / |
| 3 | TABLE={name="pingouins_trous", caslib="public"} |
| 4 | casOut={name="pingouins_fixes", caslib="public", replace=True} |
| 5 | casOutImputeInformation={name="impute_info", caslib="public", replace=True} |
| 6 | inputs={"poids", "taille"} |
| 7 | methodInterval="MEDIAN" |
| 8 | outVarsNamePrefix="fix_" |
| 9 | copyAllVars=True |
| 10 | code={casOut={name="impute_code", caslib="public", replace=True}}; |
| 11 | RUN; |
| 12 | QUIT; |