def get_vector_spline(self,X,Y,sigma,period): if len(self.combine_index)==self.p: spline= prob_spline.PoissonSpline(sigma = sigma,period=period) else: spline = prob_spline.MultinomialSpline(sigma = sigma,period = period) spline.fit(X,Y.T) return(spline)
def get_host_splines(self,X,Y_mat,sigma,period): splines=[] for i in range(len(Y_mat)): Y = numpy.squeeze(Y_mat[i,:]) poisson_spline = prob_spline.PoissonSpline(sigma = sigma[i], period=period) poisson_spline.fit(X, Y) splines.append(poisson_spline) return(splines)
def get_host_splines(self,X,Y_mat,sigma,period): Y = numpy.squeeze(Y_mat.T) poisson_spline = prob_spline.PoissonSpline(sigma = sigma, period=period) poisson_spline.fit(X, Y) return(poisson_spline)
s = pyplot.scatter(X, Y, s=30, color='black', zorder=3, label='Poisson($\mu(x)$) samples') handles.append(s) # Build a spline using the normal loglikelihood. normal_spline = prob_spline.NormalSpline(sigma=0) normal_spline.fit(X, Y) l = pyplot.plot(x, normal_spline(x), label='Fitted NormalSpline($\sigma =$ {:g})'.format( normal_spline.sigma)) handles.append(l[0]) # Build a spline using the Poisson loglikelihood. poisson_spline = prob_spline.PoissonSpline(sigma=0) poisson_spline.fit(X, Y) l = pyplot.plot(x, poisson_spline(x), label='Fitted PoissonSpline($\sigma =$ {:g})'.format( poisson_spline.sigma)) handles.append(l[0]) # Add decorations to plot. pyplot.xlabel('$x$') pyplot.legend(handles, [h.get_label() for h in handles]) pyplot.show()
import seaborn import sklearn.model_selection import prob_spline import test_common npoints = 20 numpy.random.seed(2) # Get Poisson samples around mu(x). X_pad = 1 / 2 / npoints X = numpy.linspace(X_pad, 1 - X_pad, npoints) Y = scipy.stats.poisson.rvs(test_common.mu(X)) spline = prob_spline.PoissonSpline() # Find the best sigma value by K-fold cross-validation. kfold = sklearn.model_selection.KFold(n_splits=5, shuffle=True) param_grid = dict(sigma=numpy.logspace(-8, 2, 21)) gridsearch = sklearn.model_selection.GridSearchCV(spline, param_grid, cv=kfold, error_score=0) gridsearch.fit(X, Y) spline = gridsearch.best_estimator_ pyplot.subplot(2, 1, 1) pyplot.plot(param_grid['sigma'], gridsearch.cv_results_['mean_test_score'], marker='o') i = numpy.argmax(gridsearch.cv_results_['mean_test_score'])