Модель временных рядов AzureML не может распознавать значения функций при выводе

Я загрузил обученную модель из Машинного обучения Azure. Он был обучен с помощью автоматизированного машинного обучения с использованием предустановки прогнозирования временных рядов.

Когда я хочу выполнить прогнозы, я получаю следующее сообщение:

NumericalizeTransformer: Column AircraftModel contains categories not present at fit: {('42',)}. These categories will be set to NA prior to encoding.
  .format(col, new_cats))
Column Operator contains categories not present at fit: {('US Airlines',)}. These categories will be set to NA prior to encoding.
  .format(col, new_cats))

Мой код для текущего прогноза таков:

def load_model():
    global model
    model_path = 'model.pkl'
    model = joblib.load(model_path)

def run_forecast(data):
    try:
        y_query = data.pop('y_query').values
        #y_query.fill(np.nan)
        result = model.forecast(data, y_query)
    except Exception as e:
        result = str(e)
        return json.dumps({"error": result})

    forecast_as_list = result[0].tolist()

    return forecast_as_list

input_sample = pd.DataFrame(data=[{'AircraftId': 'ATR-0001', 'FromDate': '2016-09-01T00:00:00.000Z', 'AircraftModel': '42', 'Operator': 'US Airlines', 'Country': 'Denmark', 'MonthOfYear': 9, 'y_query': 1.0}])

load_model()

forecast = run_forecast(input)

Я получаю результат, но он довольно плохой, и я подозреваю, что виноваты пропущенные столбцы функций.

Должен ли я вручную выполнить некоторую предварительную обработку перед выполнением логического вывода для модели?

1 ответ

Похоже, что данные, которые вы пытаетесь оценить, имеют категориальные уровни, не видимые во время обучения (в столбцах Модель самолета и Оператор). Не могли бы вы проверить свои данные о тренировках и увидеть, присутствуют ли там недостающие уровни ("42" и "Авиалинии США")?

В противном случае автоматизированное машинное обучение вряд ли получит хорошие результаты, если не увидит эти категории во время обучения.