gpt4 book ai didi

fast-ai - 如何将fastai表格模型应用于新数据?

转载 作者:行者123 更新时间:2023-12-02 04:24:09 27 4
gpt4 key购买 nike

我用 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: Return predictions and targets on ds_type dataset.



这是新的、未标记的数据。我不知道为什么返回的对象应该有标签。他们来自哪里?大小也没有意义。我期待有 100 个值的东西。

我通过逐行传入数据框找到了一种方法:
prediction = [float(learn.predict(df_test.loc[i])[0].data) for i in df_test.index]

还有 predict_batch 方法可用,但它似乎确实接受数据名。有没有更好的方法来做到这一点?

最佳答案

我用:

data_test = (TabularList.from_df(DF_TEST, path=path, cat_names=cat_names,cont_names=cont_vars, procs=procs)
                           .split_none()
                           .label_from_df(cols=dep_var))
data_test.valid = data_test.train
data_test=data_test.databunch()

learn.data.valid_dl = data_test.valid_dl
pred = learn.get_preds(ds_type=DatasetType.Valid)[0]

其中 DF_TEST 是测试数据帧, dep_var 是因变量, learn 是您的模型。
老实说,它在大多数情况下都有效,其他时候它会给出奇怪的错误,然后我必须迭代每一行以获得预测。

关于fast-ai - 如何将fastai表格模型应用于新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56469274/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com