顶层:如何从保存在mlflow中的PyFuncModel中的xgboost模型中提取特性重要性?
详细信息:
shap的尝试失败了(下面的代码)。mlflow.shap存在于当前版本中,但在我所使用的版本中似乎没有出现这种情况。import mlflow
import shap
model = mlflow.pyfunc.load_model(model_load_details)
print(f"model {type(model)})")
# model <class 'mlflow.pyfunc.PyFuncModel'>)
explainer = shap.Explainer(model)..。它返回错误消息"Exception:传递的模型不可调用,不能直接使用给定的掩蔽器!模型: mlflow.pyfunc.loaded_model:“进行分析。
My thinking:从mlflow中提取最佳模型的参数设置,使用这些参数重新训练新的xgboost模型,然后保存为xgboost风味:从这里,然后使用mlflow.xgboost.save_model()。但是,还有更好的方法吗?
发布于 2022-08-05 14:25:28
您可以获得这样的特性重要性:
设置mlflow配置
mlflow.set_tracking_uri(MLFLOW_TRACKING_URI)
mlflow.set_experiment(EXPERIMENT_NAME)从mlflow读取模型
loaded_model = mlflow.pyfunc.load_model(f"models:/{MODEL_NAME_MLFLOW}/staging")获得十大特色
data = {'feature_name':loaded_model._model_impl.python_model.model.feature_name_,
'imp':loaded_model._model_impl.python_model.model.feature_importances_}
fi = pd.DataFrame(data).sort_values(by='imp', ascending=False)
top_10_features = fi.head(10)['feature_name'].to_list()https://stackoverflow.com/questions/70696986
复制相似问题