Skip to content

Instantly share code, notes, and snippets.

View avisheknag17's full-sized avatar

Avishek Nag avisheknag17

View GitHub Profile
def _extend_prior_with_posterior_data(self, x,y):
self.x_init = np.append(self.x_init, np.array([x]), axis = 0)
self.y_init = np.append(self.y_init, np.array(y), axis = 0)
def optimize(self):
y_max_ind = np.argmax(self.y_init)
y_max = self.y_init[y_max_ind]
optimal_x = self.x_init[y_max_ind]
optimal_ei = None
for i in range(self.n_iter):
def _acquisition_function(self, x):
return -self._get_expected_improvement(x)
def _get_next_probable_point(self):
min_ei = float(sys.maxsize)
x_optimal = None
# Trial with an array of random data points
for x_start in (np.random.random((self.batch_size,self.x_init.shape[1])) * self.scale):
def _get_expected_improvement(self, x_new):
# Using estimate from Gaussian surrogate instead of actual function for
# a new trial data point to avoid cost
mean_y_new, sigma_y_new = self.gauss_pr.predict(np.array([x_new]), return_std=True)
sigma_y_new = sigma_y_new.reshape(-1,1)
if sigma_y_new == 0.0:
return 0.0
from sklearn.gaussian_process import GaussianProcessRegressor
from scipy.stats import norm
from scipy.optimize import minimize
import sys
import pandas as pd
class BayesianOptimizer():
def __init__(self, target_func, x_init, y_init, n_iter, scale, batch_size):
self.x_init = x_init
import numpy as np
def costly_function(x):
total = np.array([])
for x_i in x:
total = np.append(total, np.sum(np.exp(-(x_i - 5) ** 2)))
return total + np.random.randn()
import seaborn as sns
plt.figure(figsize=(18,5))
sns.lineplot(data=pd.DataFrame({'Predicted':result,'Actual':Y_test.to_numpy()}))
result = model.predict(start=1, end=125, exog=X_test.to_numpy().astype(float))
from statsmodels.tsa.statespace.sarimax import SARIMAX
model = SARIMAX(endog=Y_train.to_numpy(), exog=X_train.to_numpy().astype(float),
order=(0, 0, 0),seasonal_order=(2, 0, 1, 2))
model = model.fit(disp=False)
model.summary()
from pmdarima.arima import auto_arima
auto_model = auto_arima(Y_train.to_numpy(), exogenous=X_train.to_numpy(), m=2, seasonal=True,
suppress_warnings = True,
step_wise=True, trace=True)
auto_model.summary()
from sklearn.model_selection import TimeSeriesSplit
tss = TimeSeriesSplit()
for train_index, test_index in tss.split(X,Y):
Y_train, Y_test = Y.iloc[train_index], Y.iloc[test_index]
X_train, X_test = X.iloc[train_index], X.iloc[test_index]