Cómo recibir las mismas predicciones del modelo cargado XGBClassifier?
Parece que cada vez que vuelvo a ejecutar un script de Python que se utiliza para predecir en los mismos datos de prueba (sin volver a entrenar el modelo), obtengo diferentes resultados de predicción. Esto ocurre incluso después de establecer el parámetro de semilla en el modelo antes del entrenamiento.
Entreno y guardo el modelo en un cuaderno, como se muestra a continuación.
model = xgboost.XGBClassifier(n_estimators=100, max_depth=8, n_jobs=-1, eval_metric='auc', seed=42)
model.fit(X_train, y_train)
model.save_model("../models/xgbclassifier_01.txt")
A partir de ahí, cargo este modelo en otro script y hago predicciones sobre nuevos datos de entrada.
clf = xgb.XGBClassifier()
clf.load_model(path)
state_pred1 = clf.predict(X_test)
Cargue y vuelva a predecir para mostrar que los resultados son los mismos.
clf2 = xgb.XGBClassifier()
clf2.load_model(path)
state_pred2 = clf2.predict(X_test)
con los resultados de state_pred1
igual a state_pred2
.
El problema es que cada vez que vuelvo a ejecutar el script de prueba, no vuelvo a entrenar el modelo, pero sigo obteniendo diferentes valores de predicción (siendo state_pred1
y state_pred2
aún iguales).
¿Hay alguna manera de asegurarme de que recibo las mismas predicciones cada vez que ejecuto el script? ¿O hay parámetros aleatorios dentro del método .predict()
del modelo XGBClassifier que introducen cierta estocasticidad en las predicciones cada vez que se vuelve a ejecutar un script que carga un modelo XGB?
davy.ai
Es posible que haya parámetros aleatorios dentro del método
.predict()
del modelo XGBClassifier que introduzcan cierta estocasticidad en las predicciones cada vez que se vuelva a ejecutar un script que cargue un modelo XGB. Una forma de asegurarse de recibir las mismas predicciones cada vez que se ejecute el script es establecer la semilla aleatoria para los generadores de números aleatorios de NumPy y Python antes de hacer las predicciones. Esto se puede lograr utilizando el siguiente código antes de hacer las predicciones:Al establecer la semilla aleatoria para los generadores de números aleatorios de NumPy y Python, debería recibir las mismas predicciones cada vez que ejecute el script.