gpt4 book ai didi

python - coremltools 无法将 XGBoost 分类器转换为 coreML 模型

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:39 27 4
gpt4 key购买 nike

我对 coremltools 有疑问。

我想将经过训练的 xgboost 分类器模型转换为 coreML 模型。

import coremltools
import xgboost as xgb


X, y = get_data()

xgb_model = xgb.XGBClassifier()
xib_model.train(X, y)
coreml_model = coremltools.converters.xgboost.convert(xgb_model)
coremltools.save('my_model.mlmodel')

错误如下:

>>> coremltools.converters.xgboost.convert(xgb_model)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/karas/.pyenv/versions/anaconda2-4.3.0/lib/python2.7/site-packages/coremltools/converters/xgboost/_tree.py", line 51, in convert
return _MLModel(_convert_tree_ensemble(model, feature_names, target, force_32bit_float = force_32bit_float))
File "/Users/karas/.pyenv/versions/anaconda2-4.3.0/lib/python2.7/site-packages/coremltools/converters/xgboost/_tree_ensemble.py", line 143, in convert_tree_ensemble
raise TypeError("Unexpected type. Expecting XGBoost model.")
TypeError: Unexpected type. Expecting XGBoost model.

最佳答案

快速解决方案:

coreml_model = coremltools.converters.xgboost.convert(xgb_model._Booster)

有关此转换器的更多信息:我刚遇到这个问题,所以我调试了 _tree_ensemble.py,这是我发现的:

第一个参数 'model' 应该是 _xgboost.core.Booster_xgboost.XGBRegressor 或者 .json 文件的路径前两个数据。此外,如果您使用 .json 文件,则必须提供第二个参数 feature_names

此外,根据 the python examples on github ,还有另一种获取模型的方法:

import numpy as np
import scipy.sparse
import pickle
import xgboost as xgb

### simple example
# load file from text file, also binary buffer generated by xgboost
dtrain = xgb.DMatrix('../data/agaricus.txt.train')
dtest = xgb.DMatrix('../data/agaricus.txt.test')

# specify parameters via map, definition are same as c++ version
param = {'max_depth':2, 'eta':1, 'silent':1, 'objective':'binary:logistic'}

# specify validations set to watch performance
watchlist = [(dtest, 'eval'), (dtrain, 'train')]
num_round = 2
booster = xgb.train(param, dtrain, num_round, watchlist)

注意这里的booster_xgboost.core.Booster

然后你可以做

import coremltools
coreml_model = coremltools.converters.xgboost.convert(booster)
coreml_model.save('my_model.mlmodel')

关于python - coremltools 无法将 XGBoost 分类器转换为 coreML 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48045914/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com