我用 训练了一个模型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
可用的方法,但它似乎确实接受数据名。有没有更好的方法来做到这一点?