Repetitibilidad de modelos con Scikit-Learn
Aleatoriedad
Photo by Krissia Cruz on Unsplash

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

Albert Sanchez Lafuente

Estudié Ingenieria Industrial en la UPC. Continué mi formación en inteligencia artificial junto a la asociación Saturdays.AI de la que he formado parte del equipo de Barcelona desde sus inicios.