web-dev-qa-db-fra.com

Qu'est-ce que "random-state" dans l'exemple sklearn.model_selection.train_test_split?

Je suis vraiment nouveau dans l'apprentissage automatique, je passais par un exemple sur sklearn

Quelqu'un peut-il m'expliquer ce que signifie vraiment "état aléatoire" dans l'exemple ci-dessous

import numpy as np
from sklearn.model_selection import train_test_split
X, y = np.arange(10).reshape((5, 2)), range(5)
X

list(y)


X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.33, random_state=42) 

X_train

y_train

X_test

y_test

Pourquoi son codé en dur à 42?

7
Saurabh

N'est-ce pas évident? 42 est le Réponse à la question ultime de la vie, de l'univers et de tout .

Plus sérieusement, random_state définit simplement une graine sur le générateur aléatoire, de sorte que vos divisions de test de train soient toujours déterministes. Si vous ne définissez pas de graine, c'est différent à chaque fois.

Documentation pertinente :

random_state: int, RandomState instance ou None, facultatif (par défaut = None)
Si int, random_state est la graine utilisée par le générateur de nombres aléatoires; Si RandomState instance, random_state est le générateur de nombres aléatoires; Si None, le générateur de nombres aléatoires est l'instance RandomState utilisée par np.random.

13
cs95

L'état aléatoire garantit que les divisions que vous générez sont reproductibles. Scikit-learn utilise des permutations aléatoires pour générer les divisions. L'état aléatoire que vous fournissez est utilisé comme graine du générateur de nombres aléatoires. Cela garantit que les nombres aléatoires sont générés dans le même ordre.

6
vumaasha

Si vous ne spécifiez pas random_state dans le code, chaque fois que vous exécutez (exécutez) votre code, une nouvelle valeur aléatoire est générée et le train et les jeux de données de test ont des valeurs différentes à chaque fois.

Cependant, si une valeur fixe est affectée comme random_state = 0 ou 1 ou 42 ou tout autre entier, peu importe le nombre de fois que vous exécutez votre code, le résultat serait le même .i.e, les mêmes valeurs dans les ensembles de données de train et de test.

2
Farzana Khan

Lorsque Random_state n'est pas défini dans le code pour chaque parcours, les données du train changeront et la précision pourra changer pour chaque parcours. Lorsque Random_state = "constant integer" est défini, les données du train seront constantes pour chaque exécution afin de faciliter le débogage.

0
kishore naidu