如何修复:coremltools中的coreml模型使用python3.7转换产生看似随机输出的多类xgboost模型?

2024-05-14 10:49:07 发布

您现在位置:Python中文网/ 问答频道 /正文

当使用coremltools convert函数转换多类softmax Xgboost模型时,它会导致mlmodel在没有特定范围内给出预测,并且输出值与Xgboost模型的输出不可比较

这是为了创建CoreML模型,该模型可以在iOS应用程序中实现,用于实际传感器数据分类。我在convert函数中尝试了各种可能性

以下是Xgboost型号的设置:

dtrain = xgb.DMatrix(fft_train, label=l_train)
deval = xgb.DMatrix(fft_val, label=l_val)
dtest = xgb.DMatrix(fft_test)
evallist = [(dtrain, 'train'), (deval, 'eval')]

param = {'eta': eta, 'objective': 'multi:softprob', 'num_class': 11, 'eval_metric': 'mlogloss', 'subsample': subsample, 'max_depth': max_depth, 'gamma': gamma}

evals_result = {}
bst = xgb.train(param, dtrain, num_round, evallist, early_stopping_rounds=3, evals_result=evals_result, verbose_eval=10)

以下是转换:

coreml_model = coremltools.converters.xgboost.convert(bst, feature_names = feature_names, target = target, mode = 'classifier', n_classes = 11)
coreml_model.save('Name_of_model.mlmodel')

转换后的CoreML模型的预期结果在0到1的范围内,但实际输出似乎是随机浮动的,负的和正的。实际产出和预期产出之间也没有相关性


Tags: 函数模型fftconvertmodelevaltrainresult

热门问题