【发布时间】:2019-06-05 23:28:44
【问题描述】:
我用fastai.tabular 训练了一个模型。现在,我有一个合适的学习者。最终,模型将应用于新数据,而不仅仅是在训练集上进行拟合和在测试集上进行评估等。我尝试了不同的方法,所有这些都会导致错误或一些怪异。有没有办法将用 fastai 训练的模型应用于以前不可用的数据?还是我必须一次又一次地训练模型并输入新的测试数据?这似乎不太可能。
df_test = pd.read_parquet('generated_test.parquet').head(100)
test_data = TabularList.from_df(df_test, cat_names=cat_names, cont_names=cont_names)
prediction = learn.predict(test_data)
KeyError: 'atomic_distance'
atomic_distance 是存在于训练和测试数据中的列的名称,也包含在cont_names 中。
prediction = learn.get_preds(kaggle_test_data)
这做了一些事情,但它返回了一些奇怪的东西:
[tensor([[136.0840],
[ -2.0286],
[ -2.0944],
...,
[135.6165],
[ 2.7626],
[ 8.0316]]),
tensor([ 84.8076, -11.2570, -11.2548, ..., 81.0491, 0.8874, 4.1235])]
文档说:
Docstring:返回
ds_type数据集上的预测和目标。
这是新的、未标记的数据。我不知道为什么返回的对象应该有标签。他们来自哪里?大小也没有意义。我期待有 100 个值的东西。
我通过逐行传入数据框找到了一种方法:
prediction = [float(learn.predict(df_test.loc[i])[0].data) for i in df_test.index]
还有predict_batch 方法可用,但它似乎接受datafames。有没有更好的方法来做到这一点?
【问题讨论】:
标签: fast-ai