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

Google Colab下XGBoost转Core ML报xgboost not found错误如何解决

问题场景

在Google Colab环境中尝试将训练好的XGBoost多分类模型转换为Core ML格式,使用的实现代码如下:

import pandas as pd
from sklearn.model_selection import train_test_split
import xgboost as xgb
import coremltools as ct


data = pd.read_csv('/content/Rugby Position Requirements Updated - Rugby Position Requirements.csv')

from sklearn.preprocessing import LabelEncoder
label_encoder = LabelEncoder()

data_copy = data.copy()

data_copy['Position_Numerical'] = label_encoder.fit_transform(data['Position'])
data = data_copy
data
features = ['Weight_KG', 'Height_CM', 'EBF', 'L_Run_S', '40m_Sprint_S', 'Speed_KMPH', 'Endurance', '1RM_Bench_Press_KG', 'Vertical_Jump_CM']
X = data[features].values

y = data.Position_Numerical

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.1, random_state = 11)

train = xgb.DMatrix(X_train, label = y_train)
test = xgb.DMatrix(X_test, label = y_test)

param = {
    'max_depth': 4,
    'eta': 0.3,
    'objective': 'multi:softmax',
    'num_class': 15 }
epochs = 10

xgb_model = xgb.train(param, train, epochs)

coreml_model = ct.converters.xgboost.convert(xgb_model)
coreml_model.save('my_model.mlmodel')

运行代码时抛出如下完整报错:

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-61-d5b7e2c517d7> in <module>()
      1 import coremltools as ct
      2 
----> 3 coreml_model = ct.converters.xgboost.convert(xgb_model)
      4 

1 frames
/usr/local/lib/python3.7/dist-packages/coremltools/converters/xgboost/_tree_ensemble.py in convert_tree_ensemble(model, feature_names, target, force_32bit_float, mode, class_labels, n_classes)
    151     """
    152     if not (_HAS_XGBOOST):
--> 153         raise RuntimeError("xgboost not found. xgboost conversion API is disabled.")
    154     accepted_modes = ["regressor", "classifier"]
    155     if mode not in accepted_modes:

RuntimeError: xgboost not found. xgboost conversion API is disabled.

此前查找相关修复方案未找到有效解决方法。

解决方法

这个报错由两个原因共同导致,按以下步骤操作即可修复:

  • 修复依赖兼容问题
    Colab默认预装的coremltools版本与内置XGBoost版本存在导入检测bug,先执行以下命令重装兼容版本组合:
    • 卸载现有不兼容版本:
    !pip uninstall -y coremltools xgboost
    
    • 安装经过验证的适配版本:
    !pip install coremltools==5.2 xgboost==1.6.2
    
    • 安装完成后必须重启Colab运行时(点击顶部菜单栏「运行时」→「重启运行时」),清空旧版本的模块缓存,否则报错不会消失。
  • 补全模型转换的必填参数
    原代码的转换调用缺少多分类任务必需的参数,即使解决依赖问题也会触发后续校验错误,将转换部分的代码修改为:
    coreml_model = ct.converters.xgboost.convert(
        xgb_model,
        mode="classifier",
        class_labels=label_encoder.classes_,
        n_classes=15
    )
    
    其中mode="classifier"显式指定当前模型为分类模型,class_labels传入标签编码器存储的原始类别名,n_classes指定分类类别总数,和之前XGBoost训练时的num_class参数保持一致即可。

内容的提问来源于stack exchange,提问作者Abdullah Ajmal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:30:50