es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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:

    import numpy as np
    import random
    
    # establecer semilla aleatoria para NumPy
    np.random.seed(42)
    
    # establecer semilla aleatoria para Python
    random.seed(42)
    
    # cargar el modelo y hacer las predicciones como antes
    clf = xgb.XGBClassifier()
    clf.load_model(path)
    state_pred1 = clf.predict(X_test)
    
    # cargar y predecir nuevamente para mostrar que los resultados son los mismos
    clf2 = xgb.XGBClassifier()
    clf2.load_model(path)
    state_pred_2 = clf2.predict(X_test)
    

    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.

Comments are closed.