Как это исправить: модели coreml из coremltools преобразуют мультиклассовую модель xgboost, которая выдает на первый взгляд случайный вывод, с python 3.7 - PullRequest
0 голосов
/ 03 ноября 2019

При преобразовании мультиклассовой модели 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, но фактические результаты выглядят как случайные числа с плавающей точкой, отрицательные и положительные. Также нет никакой корреляции между фактическим и ожидаемым выходом.

...