Я пытаюсь подобрать нелинейную модель, используя обобщенную аддитивную модель. Как определить количество используемых сплайнов. Есть ли особый способ выбрать количество сплайнов? Я использовал шлицевой фитинг 3-го порядка (кубический). Ниже приведен код.
from pygam import LinearGAM
from pygam.utils import generate_X_grid
# Curve fitting using GAM model - Penalised spline curve.
def modeltrain(time,value):
return LinearGAM(n_splines=58,spline_order=3).gridsearch(time, value)
model=modeltrain(t1,x1)
# samples random x-values for prediction
XX = generate_X_grid(model)
#plots for vizualisation
plt.plot(XX, model.predict(XX), 'r--')
plt.plot(XX, model.prediction_intervals(XX,width=0.25), color='b', ls='-- ')
plt.scatter(t1, x1)
plt.show()
Это ожидаемый результат
График рассеяния исходных данных
Если количество сплайнов выбрано неправильно, то я получаю неправильную посадку.
Пожалуйста, я хотел бы предложить методы для точного выбора количества сплайнов.