2015-01-21 7 views

Antwort

72

train_test_split teilt Arrays oder Matrizen in zufällige Zug- und Testuntergruppen auf. Das bedeutet, dass Sie jedes Mal, wenn Sie es ohne Angabe von random_state ausführen, ein anderes Ergebnis erhalten, das ist das erwartete Verhalten. Zum Beispiel:

Run 1:

>>> a, b = np.arange(10).reshape((5, 2)), range(5) 
>>> train_test_split(a, b) 
[array([[6, 7], 
     [8, 9], 
     [4, 5]]), 
array([[2, 3], 
     [0, 1]]), [3, 4, 2], [1, 0]] 

Run 2

>>> train_test_split(a, b) 
[array([[8, 9], 
     [4, 5], 
     [0, 1]]), 
array([[6, 7], 
     [2, 3]]), [4, 2, 0], [3, 1]] 

Es ändert. Auf der anderen Seite, wenn Sie random_state=some_number verwenden, dann können Sie garantieren, dass die Ausgabe von Run 1 wird gleich der Ausgabe von Run 2, d. H. Ihr Split wird immer der gleiche sein. Es ist egal, was die tatsächliche random_state Nummer ist 42, 0, 21, ... Die wichtige Sache ist, dass jedes Mal, wenn Sie 42 verwenden, erhalten Sie immer die gleiche Ausgabe das erste Mal, wenn Sie den Split machen. Dies ist nützlich, wenn Sie reproduzierbare Ergebnisse wünschen, z. B. in der Dokumentation, damit jeder beim Ausführen der Beispiele konsistent die gleichen Zahlen sehen kann. In der Praxis würde ich sagen, dass Sie die random_state auf eine feste Zahl setzen sollten, während Sie Zeug testen, aber dann in der Produktion entfernen, wenn Sie wirklich eine zufällige (und nicht eine feste) Aufteilung benötigen.

In Bezug auf Ihre zweite Frage ist ein Pseudozufallszahlengenerator ein Zahlengenerator, der fast wirklich Zufallszahlen erzeugt. Warum sie nicht wirklich zufällig sind, ist außerhalb des Umfangs dieser Frage und wird wahrscheinlich in Ihrem Fall keine Rolle spielen, können Sie einen Blick auf here Formular mehr Details werfen.

+4

so was zufälliger Zustand sollte ich einstellen, sehe ich häufig diese Nummer 42. –

+0

@ElizabethSusanJoseph, es spielt keine große Rolle, ich verwende immer 0, wenn ich Reproduzierbarkeit oder sonst keiner will. Kann Scikit Jungs wie 42 sein. – elyase

+15

Dies erklärt wahrscheinlich die Nummer 42 wird so oft verwendet: http://en.wikipedia.org/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy – denson

Verwandte Themen