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?
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.
random_state
:int
,RandomState
instance ouNone
, facultatif (par défaut =None
)
Siint
,random_state
est la graine utilisée par le générateur de nombres aléatoires; SiRandomState
instance,random_state
est le générateur de nombres aléatoires; SiNone
, le générateur de nombres aléatoires est l'instanceRandomState
utilisée parnp.random
.
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.
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.
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.