You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用coremltools转换XGBoost分类器为Core ML模型时遇类型错误求助

解决XGBoost分类器转Core ML时的TypeError问题

这个问题我之前也碰到过,核心原因是coremltools.converters.xgboost.convert() 只接受XGBoost原生的Booster对象,而你代码里使用的XGBClassifier是XGBoost封装的scikit-learn风格接口类,并不是转换器期待的模型类型,所以触发了TypeError: Unexpected type. Expecting XGBoost model.错误。

另外顺便提一句:你代码里的xib_model.train(X, y)是笔误,应该是xgb_model.fit(X, y)——XGBClassifier遵循scikit-learn规范,用fit()方法训练,而不是train()。

下面给你两种可行的解决方案:

方法一:从XGBClassifier中提取底层Booster模型

如果你已经用XGBClassifier完成了训练,只需要提取它内部的原生Booster模型即可完成转换:

import coremltools
import xgboost as xgb

# 替换成你的数据加载逻辑
X, y = get_data()

# 训练XGBClassifier(注意用fit方法)
xgb_model = xgb.XGBClassifier()
xgb_model.fit(X, y)

# 提取原生Booster模型
booster_model = xgb_model.get_booster()

# 转换为Core ML模型,建议指定特征名和目标名(方便后续使用)
coreml_model = coremltools.converters.xgboost.convert(
    booster_model,
    feature_names=["feature_1", "feature_2", ...],  # 替换成你的实际特征名称列表
    target="predicted_class"  # 自定义目标变量名称
)

# 保存模型
coreml_model.save('my_model.mlmodel')

方法二:直接使用XGBoost原生Booster训练

如果不需要依赖scikit-learn接口,也可以直接用XGBoost的原生流程训练Booster模型,这样转换更直接:

import coremltools
import xgboost as xgb

# 替换成你的数据加载逻辑
X, y = get_data()

# 转换为XGBoost原生的DMatrix格式
dtrain = xgb.DMatrix(X, label=y, feature_names=["feature_1", "feature_2", ...])

# 设置训练参数(根据你的任务调整,比如分类任务用binary:logistic或multi:softmax)
params = {
    'objective': 'binary:logistic',
    'eval_metric': 'logloss',
    'max_depth': 3
}

# 训练原生Booster模型
booster_model = xgb.train(params, dtrain, num_boost_round=10)

# 转换并保存Core ML模型
coreml_model = coremltools.converters.xgboost.convert(booster_model)
coreml_model.save('my_model.mlmodel')

验证转换结果

转换完成后,你可以加载模型测试一下,确保输入输出符合预期:

# 加载Core ML模型
loaded_model = coremltools.models.MLModel('my_model.mlmodel')

# 用单条样本测试预测(注意输入要和你指定的特征名对应)
sample_input = {
    "feature_1": X[0][0],
    "feature_2": X[0][1],
    # 其他特征...
}
prediction = loaded_model.predict(sample_input)
print(prediction)

内容的提问来源于stack exchange,提问作者Karas Kazu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:49:24