Many model-fitting Python packages have a predict()
method, which outputs a prediction of the fitted model given observations of the predictor(s).
Question: How would I use these predict()
methods to predict a single value when the observation is a variable in a gekko
model?
Below is a very simple reproducible example:
Note: The actual model that I am fitting is a cubic spline using statsmodels.gam.smooth_basis.BSplines
and statsmodels.gam.generalized_additive_model.GLMGam
. However, I am hoping that this simple example with sklearn.linear_model.LinearRegression
will translate to more complex model classes from other packages.
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt
from gekko import GEKKO
# create example data
x = np.arange(100)[:, np.newaxis]
y = np.arange(100) * 2 + 10
plt.plot(x, y) # plot x vs y data
# plt.show()
model = LinearRegression() # instantiate linear model
model.fit(x, y) # fit model
x_predict = np.arange(100, 200)[:, np.newaxis] # create array of predictor observations
y_predict = model.predict(x_predict) # use model to make prediction
plt.plot(x_predict, y_predict) # plot prediction
# plt.show()
m = GEKKO() # instantiate gekko model
x2 = m.FV() # instantiate free variable
x2.STATUS = 1 # make variable available for solver
y2 = 50 # true value
# place x2 variable in numpy array to adhere to `predict()`'s argument requirements
x2_arr = np.array(x2).reshape(1, -1)
# minimize squared error between the true value and the model's prediction
m.Minimize((y2 - model.predict(x2_arr)) ** 2)
m.options.IMODE = 3
m.solve(disp=True)
print(f"x2 = {x2.value[0]:3f}")
I get the following sequential errors:
TypeError: float() argument must be a string or a real number, not 'GK_FV'
ValueError: setting an array element with a sequence.
My first thought is that I would have to create a wrapper class around the gekko.gk_parameter.GK_FV
class to modify the float()
method, but that's where my knowledge and skills end.
source https://stackoverflow.com/questions/76408801/using-the-predict-methods-of-fitted-models-with-gekko
Comments
Post a Comment