Sagemaker中XGBoost的特征重要性

5
我使用Amazon Sagemaker构建了一个XGBoost模型,但是我找不到任何帮助我解释模型并验证它是否学习了正确依赖关系的内容。
通常,我们可以通过python API中的get_fscore()函数(https://xgboost.readthedocs.io/en/latest/python/python_api.html)查看XGBoost的特征重要性,但在sagemaker api(https://sagemaker.readthedocs.io/en/stable/estimators.html)中没有这样的东西。
我知道我可以构建自己的模型,然后使用sagemaker部署它,但我很好奇是否有人遇到过这个问题以及他们如何克服它。
谢谢。
3个回答

6
截至2019-06-17,Sagemaker XGBoost模型以名为 model.tar.gz 的归档文件的形式存储在S3上。该归档文件包含名为xgboost-model的单个腌制模型文件。
要直接从S3加载模型而无需下载,可以使用以下代码:
import s3fs
import pickle
import tarfile
import xgboost

model_path = 's3://<bucket>/<path_to_model_dir>/xgboost-2019-06-16-09-56-39-854/output/model.tar.gz'

fs = s3fs.S3FileSystem()

with fs.open(model_path, 'rb') as f:
    with tarfile.open(fileobj=f, mode='r') as tar_f:
        with tar_f.extractfile('xgboost-model') as extracted_f:
            xgbooster = pickle.load(extracted_f)

xgbooster.get_fscore()

4

SageMaker XGBoost目前没有提供从模型中获取特征重要性的接口。您可以编写一些代码从XGBoost模型中获取特征重要性。您需要从S3中获取模型中的booster对象工件,然后使用以下代码片段:

import pickle as pkl
import xgboost
booster = pkl.load(open(model_file, 'rb'))
booster.get_score()
booster.get_fscore()

请参考XGBoost文档,了解从Booster对象中获取特征重要性的方法,如get_score()get_fscore()


4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接