首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从mlflow 1.9 PyFuncModel模型中提取特性重要性

从mlflow 1.9 PyFuncModel模型中提取特性重要性
EN

Stack Overflow用户
提问于 2022-01-13 12:56:18
回答 1查看 592关注 0票数 0

顶层:如何从保存在mlflow中的PyFuncModel中的xgboost模型中提取特性重要性?

详细信息:

  • 我从刚刚离开的数据科学家那里学到了模型更新的责任。他们使用mlflow来调优超参数。我需要从他们建立的模型中了解特性的重要性。我使用shap的尝试失败了(下面的代码)。
  • 我使用的是mlflow 1.9.1。我可以看到,mlflow.shap存在于当前版本中,但在我所使用的版本中似乎没有出现这种情况。
代码语言:javascript
复制
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()。但是,还有更好的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-05 14:25:28

您可以获得这样的特性重要性

设置mlflow配置

代码语言:javascript
复制
mlflow.set_tracking_uri(MLFLOW_TRACKING_URI)  
mlflow.set_experiment(EXPERIMENT_NAME)

从mlflow读取模型

代码语言:javascript
复制
loaded_model = mlflow.pyfunc.load_model(f"models:/{MODEL_NAME_MLFLOW}/staging")

获得十大特色

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70696986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档