Ich habe gerade angefangen, R zu verwenden, und bin mir nicht sicher, wie ich meinen Datensatz mit dem folgenden Beispielcode integrieren soll:
sample(x, size, replace = FALSE, prob = NULL)
Ich habe einen Datensatz, den ich in einen Trainings- (75%) und Testsatz (25%) einfügen muss. Ich bin nicht sicher, welche Informationen ich in x und Größe einfügen soll? Ist x die Dataset-Datei und wie viele Samples habe ich?
x
kann der Index (z. B. Zeilen- / Spaltennummern) Ihres seindata
.size
kann sein0.75*nrow(data)
. Versuchen Siesample(1:10, 4, replace = FALSE, prob = NULL)
zu sehen, was es tut.Antworten:
Es gibt zahlreiche Ansätze, um eine Datenpartitionierung zu erreichen. Für einen vollständigeren Ansatz werfen Sie einen Blick auf die
createDataPartition
Funktion imcaTools
Paket.Hier ist ein einfaches Beispiel:
quelle
mtcars[!train_ind]
und obwohl es nicht fehlgeschlagen ist, hat es nicht wie erwartet funktioniert. Wie könnte ich mit dem Subset!
?!
werden für logische (TRUE/FALSE
) und nicht für Indizes verwendet. Wenn Sie eine Teilmenge mit verwenden möchten!
, versuchen Sie etwas wie mtcars [!seq_len(nrow(mtcars)) %in% train_ind
,] (nicht getestet).createDataPartition
incaret
und nichtcaTools
?Es kann leicht gemacht werden durch:
Mit dem caTools- Paket:
quelle
sample = sample.split(data[,1], SplitRatio = .75)
Sollte die Notwendigkeit beseitigen, eine Spalte zu benennen.Ich würde dafür verwenden
dplyr
, macht es super einfach. Es ist eine ID-Variable in Ihrem Datensatz erforderlich, was ohnehin eine gute Idee ist, nicht nur zum Erstellen von Sets, sondern auch zur Rückverfolgbarkeit während Ihres Projekts. Fügen Sie es hinzu, wenn es noch nicht enthalten ist.quelle
Dies ist fast der gleiche Code, sieht aber schöner aus
quelle
quelle
Ich werde 'a' in Zug (70%) und Test (30%) aufteilen.
getan
quelle
Meine Lösung ist im Grunde die gleiche wie die von Dickoa, aber etwas einfacher zu interpretieren:
quelle
Nur eine kurze und einfache Möglichkeit, die fantastische dplyr- Bibliothek zu verwenden:
quelle
Default[-train_index,]
für die letzte Zeile verwenden.Wenn Sie Folgendes eingeben:
Wenn wird ein Hilfemenü gestartet, um zu erklären, was die Parameter der Beispielfunktion bedeuten.
Ich bin kein Experte, aber hier ist ein Code, den ich habe:
Dies gibt Ihnen 75% Zug und 25% Test.
quelle
Nachdem ich mir die verschiedenen hier veröffentlichten Methoden angesehen hatte, sah ich niemanden,
TRUE/FALSE
der Daten auswählte und abwählte. Also dachte ich, ich würde eine Methode teilen, die diese Technik verwendet.Erläuterung
Es gibt mehrere Möglichkeiten, Daten aus R auszuwählen. Am häufigsten werden positive / negative Indizes zum Auswählen bzw. Abwählen verwendet. Die gleichen Funktionen können jedoch durch Verwendung erreicht werden
TRUE/FALSE
Auswählen / Abwählen erreicht werden.Betrachten Sie das folgende Beispiel.
quelle
Meine Lösung mischt die Reihen und nimmt dann die ersten 75% der Reihen als Zug und die letzten 25% als Test. Super simples!
quelle
Ich kann vorschlagen, das rsample-Paket zu verwenden:
quelle
scorecard
Das Paket hat dafür eine nützliche Funktion, in der Sie das Verhältnis und den Startwert angeben könnenDie Test- und Zugdaten werden in einer Liste gespeichert und können durch Aufrufen von
dt_list$train
und abgerufen werdendt_list$test
quelle
Unten finden Sie eine Funktion, mit
list
der Teilproben derselben Größe erstellt werden, die nicht genau Ihren Wünschen entsprechen, sich aber für andere als nützlich erweisen können. In meinem Fall, um mehrere Klassifizierungsbäume für kleinere Stichproben zu erstellen, um die Überanpassung zu testen:Beispiel:
quelle
Das caTools-Paket im R-Beispielcode lautet wie folgt: -
quelle
Verwenden Sie die Basis R. Die Funktion
runif
generiert gleichmäßig verteilte Werte von 0 bis 1. Durch Variieren des Grenzwerts (train.size im folgenden Beispiel) haben Sie immer ungefähr den gleichen Prozentsatz an Zufallsdatensätzen unter dem Grenzwert.quelle
Angenommen, df ist Ihr Datenrahmen und Sie möchten 75% Zug und 25% Test erstellen
Dann erstellen Sie einen Zug und testen Datenrahmen
quelle
Die
sample.split()
Funktion fügt dem Datenrahmen eine zusätzliche Spalte 'split1' hinzu und 2/3 der Zeilen haben diesen Wert als TRUE und andere als FALSE. Jetzt werden die Zeilen, in denen split1 TRUE ist, in den Zug kopiert und andere Zeilen werden zum Testen kopiert Datenrahmen.quelle
Ich bin auf diesen gestoßen, es kann auch helfen.
quelle
Wir können Daten in ein bestimmtes Verhältnis unterteilen, hier sind es 80% Zug und 20% in einem Testdatensatz.
quelle
Achten Sie
sample
auf die Aufteilung, wenn Sie nach reproduzierbaren Ergebnissen suchen. Wenn sich Ihre Daten nur geringfügig ändern, ändert sich die Aufteilung auch bei Verwendungset.seed
. Stellen Sie sich zum Beispiel vor, die sortierte Liste der IDs in Ihren Daten enthält alle Zahlen zwischen 1 und 10. Wenn Sie nur eine Beobachtung fallen lassen, z. B. 4, würde die Stichprobe nach Standort zu anderen Ergebnissen führen, da jetzt 5 bis 10 alle Orte verschoben werden.Eine alternative Methode besteht darin, eine Hash-Funktion zu verwenden, um IDs in einige Pseudozufallszahlen abzubilden und dann den Mod dieser Zahlen abzutasten. Diese Stichprobe ist stabiler, da die Zuordnung jetzt durch den Hash jeder Beobachtung und nicht durch ihre relative Position bestimmt wird.
Beispielsweise:
[1] 9999
[1] 5000
[1] 2653
[1] 5057
[1] 5057
Die Stichprobengröße beträgt nicht genau 5000, da die Zuordnung wahrscheinlich ist, aber bei großen Stichproben sollte sie aufgrund des Gesetzes der großen Zahlen kein Problem darstellen.
Siehe auch: http://blog.richardweiss.org/2016/12/25/hash-splits.html und /crypto/20742/statistical-properties-of-hash-functions-when -berechnungsmodulo
quelle
quelle
Es gibt eine sehr einfache Möglichkeit, eine Anzahl von Zeilen mithilfe des R-Index für Zeilen und Spalten auszuwählen. Auf diese Weise können Sie den Datensatz bei mehreren Zeilen SAUBER aufteilen - beispielsweise bei den ersten 80% Ihrer Daten.
In R sind alle Zeilen und Spalten indiziert, sodass DataSetName [1,1] der Wert ist, der der ersten Spalte und der ersten Zeile von "DataSetName" zugewiesen ist. Ich kann Zeilen mit [x,] und Spalten mit [, x] auswählen.
Zum Beispiel: Wenn ich einen Datensatz mit dem bequemen Namen "Daten" mit 100 Zeilen habe, kann ich die ersten 80 Zeilen mit anzeigen
Auf die gleiche Weise kann ich diese Zeilen auswählen und unterteilen:
Jetzt habe ich meine Daten in zwei Teile aufgeteilt, ohne dass die Möglichkeit eines erneuten Samplings besteht. Schnell und einfach.
quelle