Как применить табличную модель fastai к новым данным? - PullRequest
0 голосов
/ 06 июня 2019

Я тренировал модель с 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])]

Документация гласит:

Строка документа:Вернуть прогнозы и цели на ds_type наборе данных.

Это новые, немаркированные данные.Я не знаю, почему возвращаемый объект должен иметь метки.Откуда они?Также размер не имеет смысла.Я ожидаю чего-то с 100 значениями.

Я нашел очень быстрый путь, передавая строку данных за строкой:

prediction = [float(learn.predict(df_test.loc[i])[0].data) for i in df_test.index]

Также существует метод predict_batch, но он делаеткажется, принимают datafames.Есть ли лучшие способы сделать это?

...