Используя данные сетки в scipy, используемые для интерполяции (кубические сплайны и т. Д.), Мы должны поместить в качестве параметров данные, из которых мы интерполируем, и в то же время новые точки, по которым мы хотим сделать «прогноз». ».
Можно ли построить «объект griddata», у которого был бы метод, позволяющий прогнозировать новую точку, не восстанавливая каждый раз новый сплайн интерполяции ...?
(например, как и в случае с деревом регрессии, мы сначала строим дерево, а затем применяем метод .predict (new_points)).
Вот пример:
import pandas as pd
import numpy as np
import sklearn
import scipy.interpolate as itp
n = 100
x1 = np.linspace(-2, 4, n)
X1 = []
X2 = []
for x in x1:
X1.append( [x for i in range(0, n)] )
X2.append( np.linspace(9, 15, n) )
X1 = np.array(X1).flatten()
X2 = np.array(X2).flatten()
Y1 = exp( 2*X1 )
Y2 = 3 * sqrt(X2)
#Data frames :
X = np.transpose( [X1, X2] )
X = pd.DataFrame(X, columns=["X1", "X2"])
Y = np.transpose( [Y1, Y2] )
Y = pd.DataFrame(Y, columns=["Y1", "Y2"])
X_new = np.transpose( [[-2], [9]] )
inter_cubic = itp.griddata(X, Y, X_new, method='cubic', fill_value=nan, rescale=False)
print(inter_cubic)
print(exp(2*(-2)), 3*sqrt(9))
Теперь inter_cubic - это просто массив элементов ..
Есть ли способ выполнить это, или мы можем использовать другой конструктор "сплайн"?