Comment créer une colonne de validation dans JMP standard en utilisant JSL ?Salut
Je crois qu'il existe une fonction « Créer une colonne de validation » dans JMP Pro, mais je me demande comment créer une colonne de validation (avec 25 % d'entraînement et 75 % de validation) en utilisant JSL dans JMP standard ? Merci d'avance pour votre aide.
Modélisation statistique avancéeAutomatisation et scriptageModélisation prédictive et apprentissage automatiqueIngénierie de la qualité et des procédésRe : Comment créer une colonne de validation dans JMP standard à l'aide de JSL ?Salut,
Sous réserve des mises en garde de Dan concernant l'assignation aléatoire, cela le fera (dans ce cas, pour 75 % des données d'entraînement).
dt << new column ("Validation", nominal, <<SET values=""> 0.75*nrow(dt))));
</SET>
Pourquoi cela fonctionne :
1) La pièce (1::nrow)` crée un vecteur colonne [1 2 3 ... nrow(dt)], et le transpose (en utilisant l'opérateur `) en un vecteur ligne [1,2,3, .. .nrow(dt)].
2) Ensuite, ce vecteur ligne est comparé à 0.75*nrow(dt). Si supérieur, attribuez 1, sinon attribuez 0. Donc, supposons que nous ayons nrow(dt) = 100. Alors le vecteur d'origine est :
[1, 2, 3, ... , 74, 75, 76, 77, ... 100]. Après la comparaison avec 75, le vecteur résultat est :
[0, 0, 0, ... , 0, 0, 1, 1, ... 1]. C'est-à-dire 75 0 suivis de 25 1.
3) Randomshuffle ( ) place le contenu d'un vecteur dans un ordre aléatoire... de sorte que les 75 0 et 25 1 (toujours en utilisant une table de 100 lignes comme exemple) seront rencontrés de manière aléatoire.
4) Enfin, le message << set values remplit la colonne avec cet assortiment aléatoire de 75 0 et 25 1.
FWIW, une autre façon de le faire de manière interactive est de sélectionner Cols > New Columns... dans le menu principal, puis remplissez la boîte de dialogue comme ci-dessous :

Salutations,
brady
Re : Comment créer une colonne de validation dans JMP standard à l'aide de JSL ?C'est assez simple à faire de manière interactive. Les étapes JSL doivent également être simples en utilisant cette approche.
Créez une colonne appelée Validation.
Remplissez toute la colonne avec des 0. Un zéro indiquera une observation d'ensemble d'apprentissage.
Accédez à Tables > Sous-ensemble.
Entrez un taux d'échantillonnage aléatoire de 0,75 (pour votre ensemble de validation à 75 %).
Cochez la case Lien vers la table de données d'origine.
Cliquez sur OK.
Dans la table de sous-ensemble, modifiez un champ de validation de 0 à 1.
Cliquez avec le bouton droit sur le 1 et remplissez jusqu'à la fin du tableau.
Fermez la table de sous-ensemble.
J'étais assez lâche avec mon JSL (je ne me suis pas soucié de la portée appropriée pour éviter les problèmes potentiels), mais cela devrait vous donner un bon départ.
dt=Current Data Table();
dt << New Column( "Validation",
Numeric,
"Nominal",
Format( "Best", 12 )
);
For Each Row (:Validation = 0);
dt << Subset(
Output Table("ValData"),
Linked,
Suppress formula evaluation( 0 ),
Sampling Rate( 0.75 ),
Selected columns only( 0 )
);
For Each Row (:Validation = 1);
Close( "ValData" );
dt << Clear Select;
Notez que cela se passe strictement avec une affectation aléatoire. Plusieurs fois, vous devriez vraiment stratifier la validation par la variable cible.
Ma démarche était quelque chose que j'avais caché pendant plusieurs années. Brady a deux meilleures approches ci-dessous.