При преобразовании мультиклассовой модели softmax Xgboost с использованием функции преобразования coremltools это приводит к mlmodel, который дает прогнозы без определенного диапазона, а выходные значения не сопоставимы с выходными данными модели xgboost.
Этопредназначен для создания модели CoreML, которая может быть реализована в приложении iOS для классификации данных реальных датчиков. Я испробовал всевозможные возможности в самой функции конвертирования.
Вот настройка для модели 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, но фактические результаты выглядят как случайные числа с плавающей точкой, отрицательные и положительные. Также нет никакой корреляции между фактическим и ожидаемым выходом.