我已从Azure机器学习下载经过训练的模型。使用时间序列预测预设对它进行了自动ML训练。
[当我想进行预测时,会收到此消息:
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)
我得到一个返回的结果,但是它非常糟糕,我怀疑省略的特征列是罪魁祸首。
在模型上进行推断之前,我应该手动进行一些预处理吗?
看来您要计分的数据具有训练期间未看到的分类级别(在“飞机模型”和“操作员”列中)。您能检查一下您的训练数据,看看那里是否存在缺少的等级(“ 42”和“美国航空”)?
如果不是,如果在训练时未看到这些类别,则自动ML不太可能产生良好的分数。