Los modelos de inteligencia artificial creados con Scikit-Learn tienen una componente de aleatoriedad. Esto significa que siempre que ejecutemos un mismo código para entrenar el modelo con los mismos datos, nos dará un resultado distinto cada vez.
Hay dos librerías que generan números aleatorios, random y numpy.random. Scikit-Learn utiliza la segunda.
La generación de números aleatorios se basa en un número semilla. Siempre que utilicemos la misma semilla, obtendremos el mismo resultado. Así si definimos la semilla con un valor, por ejemplo 42, obtendremos siempre los mismos resultados y estos a su vez serán diferentes de los resultados que habríamos obtenido si hubiésemos establecido la semilla en 43.
Estableceremos la semilla aleatoria, al principio de nuestro código, con el comando np.random.seed()
import numpy as np np.random.seed(42)
Podemos utilizar otra manera de hacerlo cuando sólo queramos asegurar que los resultados de una función concreta sean iguales y los de otras partes del código nos dan igual. Sólo debemos añadir el parámetro random_state a la función y darle un valor.
rfc = RandomForestClassifier(random_state=101) rfc.fit(X, y) #Siempre dará el mismo resultado rfc = RandomForestClassifier() rfc.fit(X, y) # Siempre dará un resultado diferente