python - AzureML 时间序列模型无法识别推理中的特征值
问题描述
我从 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”和“美国航空公司”)?
如果没有,如果在训练时没有看到这些类别,Automated ML 不太可能产生好分数。
推荐阅读
- php - PHP MYSQL 分页与 ORDER
- android - 什么是 Android Studio 中的“覆盖其他配置中的资源”错误。
- python - 如何将数组从 dtype=object 转换为 dtype=np.int
- forms - Symfony:表单不应包含额外字段,一页上有两个表单
- android - Android - 改造 2 - 无法解析 RxJava2CallAdapterFactory
- python - 从函数返回多个输出
- javascript - 在 Puppeteer 中使用 page.waitForNavigation 的正确方法
- php - php从没有api密钥的地址获取纬度
- ios - XLPagerTabStrip 不刷卡到下一个 vc
- c++ - 在 Linux Mint QT 上构建 C++ Allegro 5 失败