web-dev-qa-db-de.com

Zufälliger Python-Status beim Aufteilen des Datensatzes

Ich bin ein bisschen neu in Python. Kann mir jemand sagen, warum wir den zufälligen Zustand beim Aufteilen von Zug und Test auf Null setzen. 

X_train, X_test, y_train, y_test = \
    train_test_split(X, y, test_size=0.30, random_state=0)

Ich habe Situationen wie diese gesehen, in denen der Zufallszustand auf eins gesetzt ist! 

X_train, X_test, y_train, y_test = \
    train_test_split(X, y, test_size=0.30, random_state=1)

Was ist die Folge dieses zufälligen Zustands auch bei der Kreuzvalidierung?

10
Shelly

Es spielt keine Rolle, ob random_state 0 oder 1 oder eine andere ganze Zahl ist. Wichtig ist, dass derselbe Wert festgelegt wird, wenn Sie die Verarbeitung über mehrere Code-Läufe überprüfen möchten. Übrigens habe ich gesehen, dass random_state=42 in vielen offiziellen Beispielen von Scikit und auch anderswo verwendet wurde.

random_state wird, wie der Name schon sagt, zur Initialisierung des internen Zufallszahlengenerators verwendet, der in Ihrem Fall über die Aufteilung der Daten in Zug- und Testindizes entscheidet. In der Dokumentation heißt es:

Wenn random_state None oder np.random ist, wird ein zufällig initialisiertes RandomState-Objekt zurückgegeben.

Wenn random_state eine ganze Zahl ist, wird damit ein neues RandomState-Objekt erstellt.

Wenn random_state ein RandomState-Objekt ist, wird es durchgereicht.

Dies dient zum Überprüfen und Überprüfen der Daten, wenn der Code mehrmals ausgeführt wird. Wenn Sie random_state einen festen Wert festlegen, wird garantiert, dass bei jeder Ausführung des Codes dieselbe Folge von Zufallszahlen generiert wird. Und wenn keine andere Zufälligkeit in dem Prozess vorhanden ist, werden die Ergebnisse die gleichen sein wie immer. Dies hilft bei der Überprüfung der Ausgabe.

19
Vivek Kumar

Der random_state teilt zufällig ausgewählte Daten mit einer Drehung auf. Und der Unterschied ist, dass die Reihenfolge der Daten für einen bestimmten Wert von random_state gleich ist. Sie müssen verstehen, dass es sich nicht um einen bool-Wert handelt. von 0 bis zu einer beliebigen Zahl nein, wenn Sie als random_state übergeben, ist dies eine permanente Reihenfolge. Bsp: Die Reihenfolge, die Sie in random_state=0 erhalten, bleibt gleich. Wenn Sie random_state=5 ausführen und erneut zu random_state=0 zurückkehren, erhalten Sie dieselbe Reihenfolge. Und wie 0 für alle Ganzzahlen wird das gleiche ... gehen. Wie auch, random_state=None teilt sich jedes Mal zufällig auf.

Wenn Sie noch Zweifel haben, sehen Sie dies

2
Ganesh

Wir haben den Parameter random_state für die Reproduzierbarkeit der anfänglichen Umordnung von Trainingsdatensätzen nach jeder Epoche verwendet.

0
debasishbhol

Wenn Sie im Code keinen random_state erwähnen, wird bei jeder Ausführung des Codes ein neuer Zufallswert generiert, und die Zug- und Testdatensätze hätten jedes Mal andere Werte.

Wenn Sie jedoch einen bestimmten Wert für random_state (random_state = 1 oder einen anderen Wert) verwenden, wird das Ergebnis jedes Mal das gleiche sein, d. H. Dieselben Werte in Zug- und Testdatensätzen.

0
Rishi Bansal