Wie erstellt man in JMP mithilfe von JSL eine Validierungsspalte?Hallo
Ich glaube, JMP Pro bietet eine Funktion zum Erstellen einer Validierungsspalte, aber ich frage mich, wie man mit JSL in der regulären JMP-Version eine Validierungsspalte (mit 25 % Trainings- und 75 % Validierungsdaten) erstellt. Für jede Hilfe bin ich dankbar.
Fortgeschrittene statistische ModellierungAutomatisierung und SkripterstellungPrädiktive Modellierung und maschinelles LernenQualitäts- und ProzessentwicklungBetreff: Wie erstelle ich eine Validierungsspalte in regulärem JMP mit JSL?Hi,
Vorbehaltlich Dans Vorbehalten bezüglich der zufälligen Zuweisung reicht dies aus (in diesem Fall für 75 % der Trainingsdaten).
dt << new column ("Validation", nominal, <<SET values=""> 0.75*nrow(dt))));
</SET>
Warum das funktioniert:
1) Das (1::nrow)`Stück erzeugt einen Spaltenvektor [1 2 3 ... nrow(dt)] und transponiert ihn (unter Verwendung des ` Operators) in einen Zeilenvektor [1,2,3, .. .nrow(dt)].
2) Dann wird dieser Zeilenvektor mit 0,75*nrow(dt) verglichen. Wenn größer, 1 zuweisen, wenn nicht, 0 zuweisen. Nehmen wir also an, wir haben n(dt) = 100. Dann ist der ursprüngliche Vektor:
[1, 2, 3, ... , 74, 75, 76, 77, ... 100]. Nach dem Vergleich mit 75 ist der Ergebnisvektor:
[0, 0, 0, ... , 0, 0, 1, 1, ... 1]. Das heißt, 75 0s gefolgt von 25 1s.
3) Randomshuffle ( ) bringt den Inhalt eines Vektors in eine zufällige Reihenfolge ... so dass die 75 0s und 25 1s (immer noch unter Verwendung einer 100-Zeilen-Tabelle als Beispiel) in zufälliger Weise angetroffen werden.
4) Schließlich füllt die Nachricht << Set Values die Spalte mit dieser zufälligen Auswahl von 75 0s und 25 1s.
FWIW, eine andere Möglichkeit, dies interaktiv zu tun, besteht darin, Cols > New Columns ... aus dem Hauptmenü auszuwählen und dann das Dialogfeld wie folgt auszufüllen:

Beifall,
Brady
Betreff: Wie erstelle ich eine Validierungsspalte in regulärem JMP mit JSL?Es ist ziemlich einfach interaktiv zu tun. Auch die JSL-Schritte sollten mit diesem Ansatz einfach sein.
Erstellen Sie eine Spalte namens Validation.
Füllen Sie die gesamte Spalte mit Nullen. Eine Null zeigt eine Trainingssatzbeobachtung an.
Gehen Sie zu Tabellen > Teilmenge.
Geben Sie eine Stichprobenrate von 0,75 ein (für Ihr 75 %-Validierungsset).
Aktivieren Sie das Kontrollkästchen Link to Original Data Table.
OK klicken.
Ändern Sie in der Subset-Tabelle ein Validierungsfeld von 0 auf 1.
Klicken Sie mit der rechten Maustaste auf die 1 und füllen Sie bis zum Ende der Tabelle aus.
Schließen Sie die Subset-Tabelle.
Ich war ziemlich locker mit meiner JSL (habe mich nicht mit dem richtigen Scoping beschäftigt, um potenzielle Probleme zu vermeiden), aber es sollte Ihnen einen ziemlich guten Start geben.
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;
Beachten Sie, dass dies streng mit einer zufälligen Zuweisung geschieht. Oftmals sollten Sie die Validierung wirklich nach der Zielvariablen stratifizieren.
Meine Herangehensweise war etwas, das ich mehrere Jahre lang verheimlicht hatte. Brady hat unten zwei bessere Ansätze.