Je suis un peu novice en python. Quelqu'un peut-il me dire pourquoi nous avons réglé l'état aléatoire à zéro en séparant le train et l'ensemble de test.
X_train, X_test, y_train, y_test = \
train_test_split(X, y, test_size=0.30, random_state=0)
J'ai vu des situations comme celle-ci où l'état aléatoire est défini sur un!
X_train, X_test, y_train, y_test = \
train_test_split(X, y, test_size=0.30, random_state=1)
Quelle est la conséquence de cet état aléatoire dans la validation croisée?
Peu importe si random_state est 0 ou 1 ou tout autre entier. Ce qui compte, c’est que la même valeur soit définie si vous souhaitez valider votre traitement sur plusieurs exécutions du code. A propos, j’ai vu random_state=42
utilisé dans de nombreux exemples officiels de scikit, ainsi qu’ailleurs.
random_state
, comme son nom l'indique, est utilisé pour initialiser le générateur de nombres aléatoires interne, qui décidera du fractionnement des données en indices de train et de test dans votre cas. Dans la documentation , il est indiqué que:
Si random_state a la valeur None ou np.random, un objet RandomState initialisé de manière aléatoire est renvoyé.
Si random_state est un entier, il est utilisé pour créer un nouvel objet RandomState.
Si random_state est un objet RandomState, il est transmis.
Ceci permet de vérifier et de valider les données lors de l'exécution du code plusieurs fois. Définir random_state
comme valeur fixe garantira que la même séquence de nombres aléatoires soit générée chaque fois que vous exécutez le code. Et à moins qu'il y ait un autre hasard dans le processus, les résultats seront les mêmes. Cela aide à vérifier la sortie.
Random_state divise une donnée sélectionnée de manière aléatoire mais avec une torsion. Et la torsion est que l'ordre des données sera le même pour une valeur particulière de random_state.Vous devez comprendre que ce n'est pas une valeur bool prise en compte. à partir de 0 jusqu'à n'importe quel entier non, si vous passez comme random_state, ce sera un ordre permanent. Ex: la commande que vous obtiendrez dans random_state=0
reste la même. Ensuite, si vous exécutez random_state=5
et que vous revenez à random_state=0
, vous obtenez le même ordre. Et comme 0, tous les nombres entiers iront de même . Cependant, random_state=None
se divise de manière aléatoire à chaque fois.
Si vous avez encore des doutes, regardez ceci
Nous avons utilisé le paramètre random_state pour la reproductibilité du brassage initial des jeux de données d'apprentissage après chaque époque.
Si vous ne mentionnez pas random_state dans le code, chaque fois que vous exécutez votre code, une nouvelle valeur aléatoire est générée et les ensembles de données train et test auront des valeurs différentes à chaque fois.
Cependant, si vous utilisez une valeur particulière pour random_state (random_state = 1 ou toute autre valeur) à chaque fois que le résultat sera identique, c'est-à-dire les mêmes valeurs dans les ensembles de données train et test.