У меня возникают трудности с пониманием того, как работает система, использующая Rbf-интерполяцию.
Система в основном набирает 50 баллов (A,B)
, которые сопоставляются с другими 50 баллами (X,Y)
Затем обучается двунаправленная итерполяция, поэтому новые (X,Y)
точки могут быть преобразованы в (A,B)
и наоборот.
from scipy.interpolate import Rbf
# training of the model
Ai = Rbf(X, Y, A)
Bi = Rbf(X, Y, B)
Xi = Rbf(A, B, X)
Yi = Rbf(A, B, Y)
В результате Ai, Bi, Xi, Yi
будет scipy.interpolate.rbf.Rbf
объектами, которые можно вызывать для предсказания
# now given new (X,Y) points I can calculate the corresponding interpolated (A,B) coords
newX, newY = (5, 2)
pred_A = Ai(newX, newY)
pred_B = Bi(newX, newY)
# same for given new `(A,B)` points, I can calculate the corresponding interpolated `(X,Y)` coords
newA, newB = (5, 2)
pred_X = Xi(newA, newB)
pred_Y = Yi(newA, newB)
Каждая из этих функций интерполяции имеет внутри список узлов, который представляет собой коэффициенты, применяемые к каждому ядру rbf, и представляет собой список из 50 элементов
Теперь я хочу сохранить эту модель в файл, поэтому позже может быть использован для прогнозов. Поэтому я сохраняю узлы каждого из предикторов в кадре данных.
model = pd.DataFrame(np.array((Ai.nodes, Bi.nodes, Xi.nodes, Yi.nodes)).T,
columns=['Ai', 'Bi', 'Xi', 'Yi'])
model.to_csv('model.csv', index=False)
Теперь в другой программе я хочу загрузить эти узлы из файла csv, создать интерполяцию rbf и передать ее этим узлам. Но я не могу найти метод или способ, как это сделать.
Похоже, я не могу создать пустую интерполяцию и передать ее позже с данными, и я не вижу способ установки узлов в существующая rbf-интерполяция.
Есть ли способ, если у меня есть узлы обученного объекта rbf-интерполяции, чтобы создать его снова без исходных обучающих данных?