我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用matplotlib.pylab.savefig()。
def save_images(self, X, imgfile, density=False): ax = plt.axes() x = X[:, 0] y = X[:, 1] if density: xy = np.vstack([x,y]) z = scipy.stats.gaussian_kde(xy)(xy) ax.scatter(x, y, c=z, marker='o', edgecolor='') else: ax.scatter(x, y, marker='o', c=range(x.shape[0]), cmap=plt.cm.coolwarm) if self.collection is not None: self.collection.set_transform(ax.transData) ax.add_collection(self.collection) ax.text(x[0], y[0], str('start'), transform=ax.transAxes) ax.axis([-0.2, 1.2, -0.2, 1.2]) fig = plt.gcf() plt.savefig(imgfile) plt.close()
def plot_volcano(logFC,p_val,sample_name,saveName,logFC_thresh): fig=pl.figure() ## To plot and save pl.scatter(logFC[(p_val>0.05)|(abs(logFC)<logFC_thresh)],-np.log10(p_val[(p_val>0.05)|(abs(logFC)<logFC_thresh)]),color='blue',alpha=0.5); pl.scatter(logFC[(p_val<0.05)&(abs(logFC)>logFC_thresh)],-np.log10(p_val[(p_val<0.05)&(abs(logFC)>logFC_thresh)]),color='red'); pl.hlines(-np.log10(0.05),min(logFC),max(logFC)) pl.vlines(-logFC_thresh,min(-np.log10(p_val)),max(-np.log10(p_val))) pl.vlines(logFC_thresh,min(-np.log10(p_val)),max(-np.log10(p_val))) pl.xlim(-3,3) pl.xlabel('Log Fold Change') pl.ylabel('-log10(p-value)') pl.savefig(saveName) pl.close(fig) # def plot_histograms(df_peaks,pntr_list): # # for pntr in pntr_list: # colName =pntr[2]+'_Intragenic_position' # pl.hist(df_peaks[colName]) # pl.xlabel(colName) # pl.ylabel() # pl.show()
def plot_prediction_MM(model, y_train, y_test, plot_title=''): T = y_test.shape[0] mx, vx, my, vy_noiseless, vy = model.predict_forward(T, prop_mode=PROP_MM) T_train = y_train.shape[0] fig = plt.figure() ax = fig.add_subplot(111) ax.plot(np.arange(T_train), y_train[:, 0], 'k+-') ttest = np.arange(T_train, T_train+T) # pdb.set_trace() ax.plot(ttest, my[:, 0], '-', color='b') ax.fill_between( ttest, my[:, 0] + 2*np.sqrt(vy_noiseless[:, 0]), my[:, 0] - 2*np.sqrt(vy_noiseless[:, 0]), alpha=0.3, edgecolor='b', facecolor='b') ax.fill_between( ttest, my[:, 0] + 2*np.sqrt(vy[:, 0]), my[:, 0] - 2*np.sqrt(vy[:, 0]), alpha=0.1, edgecolor='b', facecolor='b') ax.plot(ttest, y_test, 'ro') ax.set_xlim([T_train-5, T_train + T]) plt.title(plot_title) plt.savefig('/tmp/kink_pred_MM_'+plot_title+'.pdf') # plt.savefig('/tmp/kink_pred_MM_'+plot_title+'.png')
def plot(params_dir): model_dirs = [name for name in os.listdir(params_dir) if os.path.isdir(os.path.join(params_dir, name))] df = defaultdict(list) for model_dir in model_dirs: df[re.sub('_bin_scaled_mono_True_ratio', '', model_dir)] = [ dd.io.load(path)['best_epoch']['validate_objective'] for path in glob.glob(os.path.join( params_dir, model_dir) + '/*.h5')] df = pd.DataFrame(dict([(k, pd.Series(v)) for k, v in df.iteritems()])) df.to_csv(os.path.basename(os.path.normpath(params_dir))) plt.figure(figsize=(16, 4), dpi=300) g = sns.boxplot(df) g.set_xticklabels(df.columns, rotation=45) plt.tight_layout() plt.savefig('{}_errors_box_plot.png'.format( os.path.join(IMAGES_DIRECTORY, os.path.basename(os.path.normpath(params_dir)))))
def plot_confusion_matrix(cm, label_list, title='Confusion matrix', cmap=None): from matplotlib import pylab cm = np.asarray(cm, dtype=np.float32) for i, row in enumerate(cm): cm[i] = cm[i] / np.sum(cm[i]) #import matplotlib.pyplot as plt #plt.ion() pylab.clf() pylab.matshow(cm, fignum=False, cmap='Blues', vmin=0, vmax=1.0) ax = pylab.axes() ax.set_xticks(range(len(label_list))) ax.set_xticklabels(label_list, rotation='vertical') ax.xaxis.set_ticks_position('bottom') ax.set_yticks(range(len(label_list))) ax.set_yticklabels(label_list) pylab.title(title) pylab.colorbar() pylab.grid(False) pylab.xlabel('Predicted class') pylab.ylabel('True class') pylab.grid(False) pylab.savefig('test.jpg') pylab.show()
def plot_1d(dataset, nbins, data): with sns.axes_style('white'): plt.rc('font', weight='bold') plt.rc('grid', lw=2) plt.rc('lines', lw=3) plt.figure(1) plt.hist(data, bins=np.arange(nbins+1), color='blue') plt.ylabel('Count', weight='bold', fontsize=24) xticks = list(plt.gca().get_xticks()) while (nbins-1) / float(xticks[-1]) < 1.1: xticks = xticks[:-1] while xticks[0] < 0: xticks = xticks[1:] xticks.append(nbins-1) xticks = list(sorted(xticks)) plt.gca().set_xticks(xticks) plt.xlim([int(np.ceil(-0.05*nbins)),int(np.ceil(nbins*1.05))]) plt.legend(loc='upper right') plt.savefig('plots/marginals-{0}.pdf'.format(dataset.replace('_','-')), bbox_inches='tight') plt.clf() plt.close()
def plot_2d(dataset, nbins, data, extra=None): with sns.axes_style('white'): plt.rc('font', weight='bold') plt.rc('grid', lw=2) plt.rc('lines', lw=2) rows, cols = nbins im = np.zeros(nbins) for i in xrange(rows): for j in xrange(cols): im[i,j] = ((data[:,0] == i) & (data[:,1] == j)).sum() plt.imshow(im, cmap='gray_r', interpolation='none') if extra is not None: dataset += extra plt.savefig('plots/marginals-{0}.pdf'.format(dataset.replace('_','-')), bbox_inches='tight') plt.clf() plt.close()
def plot_1d(dataset, nbins): data = np.loadtxt('experiments/uci/data/splits/{0}_all.csv'.format(dataset), skiprows=1, delimiter=',')[:,-1] with sns.axes_style('white'): plt.rc('font', weight='bold') plt.rc('grid', lw=2) plt.rc('lines', lw=3) plt.figure(1) plt.hist(data, bins=np.arange(nbins+1), color='blue') plt.ylabel('Count', weight='bold', fontsize=24) xticks = list(plt.gca().get_xticks()) while (nbins-1) / float(xticks[-1]) < 1.1: xticks = xticks[:-1] while xticks[0] < 0: xticks = xticks[1:] xticks.append(nbins-1) xticks = list(sorted(xticks)) plt.gca().set_xticks(xticks) plt.xlim([int(np.ceil(-0.05*nbins)),int(np.ceil(nbins*1.05))]) plt.legend(loc='upper right') plt.savefig('plots/marginals-{0}.pdf'.format(dataset.replace('_','-')), bbox_inches='tight') plt.clf() plt.close()
def plot_2d(dataset, nbins, data=None, extra=None): if data is None: data = np.loadtxt('experiments/uci/data/splits/{0}_all.csv'.format(dataset), skiprows=1, delimiter=',')[:,-2:] with sns.axes_style('white'): plt.rc('font', weight='bold') plt.rc('grid', lw=2) plt.rc('lines', lw=2) rows, cols = nbins im = np.zeros(nbins) for i in xrange(rows): for j in xrange(cols): im[i,j] = ((data[:,0] == i) & (data[:,1] == j)).sum() plt.imshow(im, cmap='gray_r', interpolation='none') if extra is not None: dataset += extra plt.savefig('plots/marginals-{0}.pdf'.format(dataset.replace('_','-')), bbox_inches='tight') plt.clf() plt.close()
def plotValueFunction(self, valueFunction, prefix): '''3d plot of a value function.''' fig, ax = plt.subplots(subplot_kw = dict(projection = '3d')) X, Y = np.meshgrid(np.arange(self.numCols), np.arange(self.numRows)) Z = valueFunction.reshape(self.numRows, self.numCols) for i in xrange(len(X)): for j in xrange(len(X[i])/2): tmp = X[i][j] X[i][j] = X[i][len(X[i]) - j - 1] X[i][len(X[i]) - j - 1] = tmp my_col = cm.jet(np.random.rand(Z.shape[0],Z.shape[1])) ax.plot_surface(X, Y, Z, rstride = 1, cstride = 1, cmap = plt.get_cmap('jet')) plt.gca().view_init(elev=30, azim=30) plt.savefig(self.outputPath + prefix + 'value_function.png') plt.close()
def plotLine(self, x_vals, y_vals, x_label, y_label, title, filename=None): plt.clf() plt.xlabel(x_label) plt.xlim(((min(x_vals) - 0.5), (max(x_vals) + 0.5))) plt.ylabel(y_label) plt.ylim(((min(y_vals) - 0.5), (max(y_vals) + 0.5))) plt.title(title) plt.plot(x_vals, y_vals, c='k', lw=2) #plt.plot(x_vals, len(x_vals) * y_vals[0], c='r', lw=2) if filename == None: plt.show() else: plt.savefig(self.outputPath + filename)
def plot_entropy(): pylab.clf() pylab.figure(num=None, figsize=(5, 4)) title = "Entropy $H(X)$" pylab.title(title) pylab.xlabel("$P(X=$coin will show heads up$)$") pylab.ylabel("$H(X)$") pylab.xlim(xmin=0, xmax=1.1) x = np.arange(0.001, 1, 0.001) y = -x * np.log2(x) - (1 - x) * np.log2(1 - x) pylab.plot(x, y) # pylab.xticks([w*7*24 for w in [0,1,2,3,4]], ['week %i'%(w+1) for w in # [0,1,2,3,4]]) pylab.autoscale(tight=True) pylab.grid(True) filename = "entropy_demo.png" pylab.savefig(os.path.join(CHART_DIR, filename), bbox_inches="tight")
def plot_feat_importance(feature_names, clf, name): pylab.clf() coef_ = clf.coef_ important = np.argsort(np.absolute(coef_.ravel())) f_imp = feature_names[important] coef = coef_.ravel()[important] inds = np.argsort(coef) f_imp = f_imp[inds] coef = coef[inds] xpos = np.array(range(len(coef))) pylab.bar(xpos, coef, width=1) pylab.title('Feature importance for %s' % (name)) ax = pylab.gca() ax.set_xticks(np.arange(len(coef))) labels = ax.set_xticklabels(f_imp) for label in labels: label.set_rotation(90) filename = name.replace(" ", "_") pylab.savefig(os.path.join( CHART_DIR, "feat_imp_%s.png" % filename), bbox_inches="tight")
def plot_feat_importance(feature_names, clf, name): pylab.figure(num=None, figsize=(6, 5)) coef_ = clf.coef_ important = np.argsort(np.absolute(coef_.ravel())) f_imp = feature_names[important] coef = coef_.ravel()[important] inds = np.argsort(coef) f_imp = f_imp[inds] coef = coef[inds] xpos = np.array(list(range(len(coef)))) pylab.bar(xpos, coef, width=1) pylab.title('Feature importance for %s' % (name)) ax = pylab.gca() ax.set_xticks(np.arange(len(coef))) labels = ax.set_xticklabels(f_imp) for label in labels: label.set_rotation(90) filename = name.replace(" ", "_") pylab.savefig(os.path.join( CHART_DIR, "feat_imp_%s.png" % filename), bbox_inches="tight")
def plot_confusion_matrix(cm, genre_list, name, title): pylab.clf() pylab.matshow(cm, fignum=False, cmap='Blues', vmin=0, vmax=1.0) ax = pylab.axes() ax.set_xticks(range(len(genre_list))) ax.set_xticklabels(genre_list) ax.xaxis.set_ticks_position("bottom") ax.set_yticks(range(len(genre_list))) ax.set_yticklabels(genre_list) pylab.title(title) pylab.colorbar() pylab.grid(False) pylab.show() pylab.xlabel('Predicted class') pylab.ylabel('True class') pylab.grid(False) pylab.savefig( os.path.join(CHART_DIR, "confusion_matrix_%s.png" % name), bbox_inches="tight")
def plot_roc(auc_score, name, tpr, fpr, label=None): pylab.clf() pylab.figure(num=None, figsize=(5, 4)) pylab.grid(True) pylab.plot([0, 1], [0, 1], 'k--') pylab.plot(fpr, tpr) pylab.fill_between(fpr, tpr, alpha=0.5) pylab.xlim([0.0, 1.0]) pylab.ylim([0.0, 1.0]) pylab.xlabel('False Positive Rate') pylab.ylabel('True Positive Rate') pylab.title('ROC curve (AUC = %0.2f) / %s' % (auc_score, label), verticalalignment="bottom") pylab.legend(loc="lower right") filename = name.replace(" ", "_") pylab.savefig( os.path.join(CHART_DIR, "roc_" + filename + ".png"), bbox_inches="tight")
def plotKChart(self, misClassDict, saveFigPath): kList = [] misRateList = [] for k, misClassNum in misClassDict.iteritems(): kList.append(k) misRateList.append(1.0 - 1.0/k*misClassNum) fig = plt.figure(saveFigPath) plt.plot(kList, misRateList, 'r--') plt.title(saveFigPath) plt.xlabel('k Num.') plt.ylabel('Misclassified Rate') plt.legend(saveFigPath) plt.grid(True) plt.savefig(saveFigPath) plt.show() ################################### PART3 TEST ######################################## # ??
def test_plot_timeseries2(): filename = abspath(join(testdir, 'plot_timeseries2.png')) if isfile(filename): os.remove(filename) periods = 5 index = pd.date_range('1/1/2016', periods=periods, freq='H') data = np.array([[1,2,3], [4,5,6], [7,8,9], [10,11,12], [13,14,15]]) df = pd.DataFrame(data=data, index=index, columns=['A', 'B', 'C']) tfilter = pd.Series(data = (df.index < index[3]), index = df.index) plt.figure() pecos.graphics.plot_timeseries(df,tfilter, yaxis_min=0, yaxis_max=20) plt.savefig(filename, format='png') plt.close() assert_true(isfile(filename))
def test_plot_heatmap1(): filename = abspath(join(testdir, 'plot_heatmap1.png')) if isfile(filename): os.remove(filename) periods = 5 index = pd.date_range('1/1/2016', periods=periods, freq='D') data = np.random.rand(periods, 4) df = pd.DataFrame(data=data, index=index, columns=['A', 'B', 'C', 'D']) plt.figure() pecos.graphics.plot_heatmap(df) plt.savefig(filename, format='png', bbox_inches='tight', pad_inches = 0) plt.close() assert_true(isfile(filename))
def test_plot_doy_heatmap1(): filename = abspath(join(testdir, 'plot_doy_heatmap1.png')) if isfile(filename): os.remove(filename) periods = 5*24 # 5 days index = pd.date_range('3/1/2016', periods=periods, freq='H') data = np.random.rand(periods) df = pd.DataFrame(data=data, index=index, columns=['A']) plt.figure() pecos.graphics.plot_doy_heatmap(df['A']) plt.savefig(filename, format='png') plt.close() assert_true(isfile(filename))
def test_plot_doy_heatmap2(): filename = abspath(join(testdir, 'plot_doy_heatmap2.png')) if isfile(filename): os.remove(filename) periods = 365*12 index = pd.date_range('1/1/2016', periods=periods, freq='2H') data = np.random.rand(periods) df = pd.DataFrame(data=data, index=index, columns=['A']) overlay = pd.DataFrame(index=[1,100,200,300,365], data={'A': [40000,20000,60000,10000,5000], 'B': [60000,70000,75000,50000,65000]}) plt.figure() pecos.graphics.plot_doy_heatmap(df['A'], cmap='gray', overlay=overlay) plt.savefig(filename, format='png') plt.close() assert_true(isfile(filename))
def fit_data(): data=np.loadtxt('data.dat') print(data) params = dict() params["c"] = {"min" : -np.inf,"max" : np.inf} result = qudi_fitting.make_lorentzian_fit(axis=data[:,0], data=data[:,3], add_parameters=params) print(result.fit_report()) plt.plot(data[:,0],-data[:,3]+2,"b-o",label="data mean") # plt.plot(data[:,0],data[:,1],label="data") # plt.plot(data[:,0],data[:,2],label="data") plt.plot(data[:,0],-result.best_fit+2,"r-",linewidth=2.,label="fit") # plt.plot(data[:,0],result.init_fit,label="init") plt.xlabel("time (ns)") plt.ylabel("polarization transfer (arb. u.)") plt.legend(loc=1) # plt.savefig("pol20_24repetition_pol.pdf") # plt.savefig("pol20_24repetition_pol.png") plt.show() savedata=[[data[ii,0],-data[ii,3]+2,-result.best_fit[ii]+2] for ii in range(len(data[:,0]))] np.savetxt("pol_data_fit.csv",savedata) # print(result.params) print(result.params)
def plot_confusion_matrix(cm, plot_title, filename, genres=None): if not genres: genres = GENRES pylab.clf() pylab.matshow(cm, fignum=False, cmap='Blues', vmin=0, vmax=100.0) axes = pylab.axes() axes.set_xticks(range(len(genres))) axes.set_xticklabels(genres, rotation=45) axes.set_yticks(range(len(genres))) axes.set_yticklabels(genres) axes.xaxis.set_ticks_position("bottom") pylab.title(plot_title, fontsize=14) pylab.colorbar() pylab.xlabel('Predicted class', fontsize=12) pylab.ylabel('Correct class', fontsize=12) pylab.grid(False) #pylab.show() pylab.savefig(os.path.join(PLOTS_DIR, "cm_%s.eps" % filename), bbox_inches="tight")
def nmf(fdoc, fvocab): T = 100 nmf = NMF(fdoc, fvocab) nmf.train(T) nmf.get_words() # print(mf.R) plt.figure() plt.plot(range(1,T+1),nmf.objective) plt.xticks(np.linspace(1,T,10)) plt.xlabel('Iterations') plt.ylabel('Objective') plt.title('Variation of objective with iterations') plt.savefig('hw5_2a.png') plt.show()
def gp_partd(Xtrain,ytrain,Xtest,ytest): gp = gaussian_process(Xtrain[:,3],ytrain,Xtrain[:,3],ytrain) gp.init_kernel_matrices(b=5,var=2) gp.predict_test() x = np.asarray(Xtrain[:,3]).flatten() xsortind = np.argsort(x) y1 = np.asarray(ytrain).flatten() y2 = np.asarray(gp.test_predictions).flatten() plt.figure() plt.scatter(x[xsortind],y1[xsortind]) plt.plot(x[xsortind],y2[xsortind],'b-') plt.xlabel('Car Weight (Dimension 4)') plt.ylabel('Outcome') plt.title('Visualizing model through single dimension') plt.savefig('hw3_gaussian_dim4_viz') plt.show()
def test_plot_fragility_curve1(): from scipy.stats import lognorm filename = abspath(join(testdir, 'plot_fragility_curve1.png')) if isfile(filename): os.remove(filename) FC = wntr.scenario.FragilityCurve() FC.add_state('Minor', 1, {'Default': lognorm(0.5,scale=0.3)}) FC.add_state('Major', 2, {'Default': lognorm(0.5,scale=0.7)}) plt.figure() wntr.graphics.plot_fragility_curve(FC) plt.savefig(filename, format='png') plt.close() assert_true(isfile(filename))
def plot_true_and_augmented_data(sample,noised_sample,label,n_examples): output_dir = os.path.split(FLAGS.output)[0] # Save augmented data plt.clf() fig, ax = plt.subplots(3,1) for t in range(noised_sample.shape[1]): ax[t].plot(noised_sample[:,t]) ax[t].set_xlabel('time (samples)') ax[t].set_ylabel('amplitude') ax[0].set_title('window {:03d}, cluster_id: {}'.format(n_examples,label)) plt.savefig(os.path.join(output_dir, "augmented_data", 'augmented_{:03d}.pdf'.format(n_examples))) plt.close() # Save true data plt.clf() fig, ax = plt.subplots(3,1) for t in range(sample.shape[1]): ax[t].plot(sample[:,t]) ax[t].set_xlabel('time (samples)') ax[t].set_ylabel('amplitude') ax[0].set_title('window {:03d}, cluster_id: {}'.format(n_examples,label)) plt.savefig(os.path.join(output_dir, "true_data", 'true__{:03d}.pdf'.format(n_examples))) plt.close()
def test_abu_evolution(self): from nugridpy import ppn, utils import matplotlib matplotlib.use('agg') import matplotlib.pylab as mpy import os # Perform tests within temporary directory with TemporaryDirectory() as tdir: # wget the data for a ppn run from the CADC VOspace os.system("wget -q --content-disposition --directory '" + tdir + "' "\ + "'http://www.canfar.phys.uvic.ca/vospace/synctrans?TARGET="\ + "vos%3A%2F%2Fcadc.nrc.ca%21vospace%2Fnugrid%2Fdata%2Fprojects%2Fppn%2Fexamples%2F"\ + "ppn_Hburn_simple%2Fx-time.dat&DIRECTION=pullFromVoSpace&PROTOCOL"\ + "=ivo%3A%2F%2Fivoa.net%2Fvospace%2Fcore%23httpget'") #nugrid_dir= os.path.dirname(os.path.dirname(ppn.__file__)) #NuPPN_dir= nugrid_dir + "/NuPPN" #test_data_dir= NuPPN_dir + "/examples/ppn_Hburn_simple/RUN_MASTER" symbs=utils.symbol_list('lines2') x=ppn.xtime(tdir) specs=['PROT','HE 4','C 12','N 14','O 16'] i=0 for spec in specs: x.plot('time',spec,logy=True,logx=True,shape=utils.linestyle(i)[0],show=False,title='') i += 1 mpy.ylim(-5,0.2) mpy.legend(loc=0) mpy.xlabel('$\log t / \mathrm{min}$') mpy.ylabel('$\log X \mathrm{[mass fraction]}$') abu_evol_file = 'abu_evolution.png' mpy.savefig(abu_evol_file) self.assertTrue(os.path.exists(abu_evol_file))
def save(self, out_path): '''Saves a figure for the monitor Args: out_path: str ''' plt.clf() np.set_printoptions(precision=4) font = { 'size': 7 } matplotlib.rc('font', **font) y = 2 x = ((len(self.d) - 1) // y) + 1 fig, axes = plt.subplots(y, x) fig.set_size_inches(20, 8) for j, (k, v) in enumerate(self.d.iteritems()): ax = axes[j // x, j % x] ax.plot(v, label=k) if k in self.d_valid.keys(): ax.plot(self.d_valid[k], label=k + '(valid)') ax.set_title(k) ax.legend() plt.tight_layout() plt.savefig(out_path, facecolor=(1, 1, 1)) plt.close()
def draw(m, name, extra=None): FIG.clf() matrix = m orig_shape = np.shape(matrix) # lose the channel shape in the end of orig_shape new_shape = orig_shape[:-1] matrix = np.reshape(matrix, new_shape) ax = FIG.add_subplot(1,1,1) ax.set_aspect('equal') plt.imshow(matrix, interpolation='nearest', cmap=plt.cm.gray) # plt.imshow(matrix, interpolation='nearest', cmap=plt.cm.ocean) plt.colorbar() if extra != None: greens, reds = extra grn_x, grn_y, = greens red_x, red_y = reds plt.scatter(x=grn_x, y=grn_y, c='g', s=40) plt.scatter(x=red_x, y=red_y, c='r', s=40) # # put a blue dot at (10, 20) # plt.scatter([10], [20]) # # put a red dot, size 40, at 2 locations: # plt.scatter(x=[3, 4], y=[5, 6], c='r', s=40) # # plt.plot() plt.savefig(name)
def draw_annotate(x_cords, y_cords, anns, name): FIG.clf() y = x_cords z = y_cords n = anns fig = FIG ax = fig.add_subplot(1,1,1) ax.set_xlim([0,L]) ax.set_ylim([0,L]) ax.set_ylim(ax.get_ylim()[::-1]) ax.scatter(z, y) for i, txt in enumerate(n): ax.annotate(txt, (z[i],y[i])) fig.savefig(name)
def plot_latent(model, y, plot_title=''): # make prediction on some test inputs N_test = 300 C = model.get_hypers()['C_emission'][0, 0] x_test = np.linspace(-10, 8, N_test) / C x_test = np.reshape(x_test, [N_test, 1]) if isinstance(model, aep.SGPSSM) or isinstance(model, vfe.SGPSSM): zu = model.dyn_layer.zu else: zu = model.sgp_layer.zu mu, vu = model.predict_f(zu) # mu, Su = model.dyn_layer.mu, model.dyn_layer.Su mf, vf = model.predict_f(x_test) my, vy = model.predict_y(x_test) # plot function fig = plt.figure() ax = fig.add_subplot(111) # ax.plot(x_test[:,0], kink_true(x_test[:,0]), '-', color='k') ax.plot(C*x_test[:,0], my[:,0], '-', color='r', label='y') ax.fill_between( C*x_test[:,0], my[:,0] + 2*np.sqrt(vy[:, 0]), my[:,0] - 2*np.sqrt(vy[:, 0]), alpha=0.2, edgecolor='r', facecolor='r') ax.plot( y[0:model.N-1], y[1:model.N], 'r+', alpha=0.5) mx, vx = model.get_posterior_x() ax.set_xlabel(r'$x_{t-1}$') ax.set_ylabel(r'$x_{t}$') plt.title(plot_title) plt.savefig('/tmp/lincos_'+plot_title+'.png') # generate a dataset from the lincos function above
def plot_latent(model, y, plot_title=''): # make prediction on some test inputs N_test = 200 C = model.get_hypers()['C_emission'][0, 0] x_test = np.linspace(-4, 6, N_test) / C x_test = np.reshape(x_test, [N_test, 1]) zu = model.dyn_layer.zu mu, vu = model.predict_f(zu) # mu, Su = model.dyn_layer.mu, model.dyn_layer.Su mf, vf = model.predict_f(x_test) my, vy = model.predict_y(x_test) # plot function fig = plt.figure() ax = fig.add_subplot(111) # ax.plot(x_test[:,0], kink_true(x_test[:,0]), '-', color='k') ax.plot(C*x_test[:,0], my[:,0], '-', color='r', label='y') ax.fill_between( C*x_test[:,0], my[:,0] + 2*np.sqrt(vy[:, 0]), my[:,0] - 2*np.sqrt(vy[:, 0]), alpha=0.2, edgecolor='r', facecolor='r') # ax.plot(zu, mu, 'ob') # ax.errorbar(zu, mu, yerr=3*np.sqrt(vu), fmt='ob') # ax.plot(x_test[:,0], mf[:,0], '-', color='b') # ax.fill_between( # x_test[:,0], # mf[:,0] + 2*np.sqrt(vf[:,0]), # mf[:,0] - 2*np.sqrt(vf[:,0]), # alpha=0.2, edgecolor='b', facecolor='b') ax.plot( y[0:model.N-1], y[1:model.N], 'r+', alpha=0.5) mx, vx = model.get_posterior_x() ax.set_xlabel(r'$x_{t-1}$') ax.set_ylabel(r'$x_{t}$') ax.set_xlim([-4, 6]) # ax.set_ylim([-7, 7]) plt.title(plot_title) # plt.savefig('/tmp/kink_'+plot_title+'.pdf') plt.savefig('/tmp/kink_'+plot_title+'.png')
def plot_prediction_MC(model, y_train, y_test, plot_title=''): T = y_test.shape[0] x_samples, my, vy = model.predict_forward(T, prop_mode=PROP_MC) T_train = y_train.shape[0] fig = plt.figure() ax = fig.add_subplot(111) ax.plot(np.arange(T_train), y_train[:, 0], 'k+-') ttest = np.arange(T_train, T_train+T) ttest = np.reshape(ttest, [T, 1]) loglik, ranks = compute_log_lik(np.exp(2*model.sn), y_test, my[:, :, 0].T) red = 0.1 green = 0. * red blue = 1. - red color = np.array([red, green, blue]).T for k in np.argsort(ranks): ax.plot(ttest, my[:, k, 0], '-', color=color*ranks[k], alpha=0.5) # ax.plot(np.tile(ttest, [1, my.shape[1]]), my[:, :, 0], '-x', color='r', alpha=0.3) # ax.plot(np.tile(ttest, [1, my.shape[1]]), x_samples[:, :, 0], 'x', color='m', alpha=0.3) ax.plot(ttest, y_test, 'ro') ax.set_xlim([T_train-5, T_train + T]) plt.title(plot_title) plt.savefig('/tmp/kink_pred_MC_'+plot_title+'.pdf') # plt.savefig('/tmp/kink_pred_MC_'+plot_title+'.png') # generate a dataset from the kink function above
def run_regression_1D(): np.random.seed(42) print "create dataset ..." N = 200 X = np.random.rand(N, 1) Y = np.sin(12 * X) + 0.5 * np.cos(25 * X) + np.random.randn(N, 1) * 0.2 # plt.plot(X, Y, 'kx', mew=2) def plot(m): xx = np.linspace(-0.5, 1.5, 100)[:, None] # mean, var = m.predict_f(xx) samples, mf, vf = m.predict_f(xx, config.PROP_MC) zu = m.sgp_layers[0].zu mean_u, var_u = m.predict_f(zu) plt.figure() plt.plot(X, Y, 'kx', mew=2) # plt.plot(xx, mean, 'b', lw=2) # plt.fill_between( # xx[:, 0], # mean[:, 0] - 2 * np.sqrt(var[:, 0]), # mean[:, 0] + 2 * np.sqrt(var[:, 0]), # color='blue', alpha=0.2) plt.plot(np.tile(xx[np.newaxis, :], [200, 1])) plt.errorbar(zu, mean_u, yerr=2 * np.sqrt(var_u), fmt='ro') plt.xlim(-0.1, 1.1) # inference print "create model and optimize ..." M = 20 hidden_size = [2] model = aep.SDGPR(X, Y, M, hidden_size, lik='Gaussian') model.optimise(method='L-BFGS-B', alpha=1, maxiter=2000) plot(model) # plt.show() plt.savefig('/tmp/aep_dgpr_1D.pdf')
def run_regression_1D_stoc(): np.random.seed(42) print "create dataset ..." N = 200 X = np.random.rand(N, 1) Y = np.sin(12 * X) + 0.5 * np.cos(25 * X) + np.random.randn(N, 1) * 0.2 # plt.plot(X, Y, 'kx', mew=2) def plot(m): xx = np.linspace(-0.5, 1.5, 100)[:, None] mean, var = m.predict_f(xx) zu = m.sgp_layers[0].zu mean_u, var_u = m.predict_f(zu) plt.figure() plt.plot(X, Y, 'kx', mew=2) plt.plot(xx, mean, 'b', lw=2) plt.fill_between( xx[:, 0], mean[:, 0] - 2 * np.sqrt(var[:, 0]), mean[:, 0] + 2 * np.sqrt(var[:, 0]), color='blue', alpha=0.2) plt.errorbar(zu, mean_u, yerr=2 * np.sqrt(var_u), fmt='ro') plt.xlim(-0.1, 1.1) # inference print "create model and optimize ..." M = 20 hidden_size = [2] model = aep.SDGPR(X, Y, M, hidden_size, lik='Gaussian') model.optimise(method='adam', alpha=1.0, maxiter=50000, mb_size=M, adam_lr=0.001) plot(model) plt.show() plt.savefig('/tmp/aep_dgpr_1D_stoc.pdf')
def run_cluster_MM(nat_param=True): import GPy # create dataset print "creating dataset..." N = 100 k1 = GPy.kern.RBF(5, variance=1, lengthscale=1. / np.random.dirichlet(np.r_[10, 10, 10, 0.1, 0.1]), ARD=True) k2 = GPy.kern.RBF(5, variance=1, lengthscale=1. / np.random.dirichlet(np.r_[10, 0.1, 10, 0.1, 10]), ARD=True) k3 = GPy.kern.RBF(5, variance=1, lengthscale=1. / np.random.dirichlet(np.r_[0.1, 0.1, 10, 10, 10]), ARD=True) X = np.random.normal(0, 1, (N, 5)) A = np.random.multivariate_normal(np.zeros(N), k1.K(X), 10).T B = np.random.multivariate_normal(np.zeros(N), k2.K(X), 10).T C = np.random.multivariate_normal(np.zeros(N), k3.K(X), 10).T Y = np.vstack((A, B, C)) labels = np.hstack((np.zeros(A.shape[0]), np.ones( B.shape[0]), np.ones(C.shape[0]) * 2)) # inference np.random.seed(42) print "inference ..." M = 30 D = 5 lvm = vfe.SGPLVM(Y, D, M, lik='Gaussian', nat_param=nat_param) lvm.optimise(method='L-BFGS-B', maxiter=20) # lvm.optimise(method='adam', adam_lr=0.05, maxiter=2000) ls = np.exp(lvm.sgp_layer.ls) print ls inds = np.argsort(ls) plt.figure() mx, vx = lvm.get_posterior_x() plt.scatter(mx[:, inds[0]], mx[:, inds[1]], c=labels) zu = lvm.sgp_layer.zu plt.plot(zu[:, inds[0]], zu[:, inds[1]], 'ko') # plt.show() plt.savefig('/tmp/gplvm_cluster_MM.pdf')
def run_regression_1D_stoc(): np.random.seed(42) print "create dataset ..." N = 200 X = np.random.rand(N, 1) Y = np.sin(12 * X) + 0.5 * np.cos(25 * X) + np.random.randn(N, 1) * 0.2 # plt.plot(X, Y, 'kx', mew=2) def plot(m): xx = np.linspace(-1.5, 2.5, 200)[:, None] mean, var = m.predict_f(xx) zu = m.sgp_layer.zu mean_u, var_u = m.predict_f(zu) plt.figure() plt.plot(X, Y, 'kx', mew=2) plt.plot(xx, mean, 'b', lw=2) plt.fill_between( xx[:, 0], mean[:, 0] - 2 * np.sqrt(var[:, 0]), mean[:, 0] + 2 * np.sqrt(var[:, 0]), color='blue', alpha=0.2) plt.errorbar(zu, mean_u, yerr=2 * np.sqrt(var_u), fmt='ro') plt.xlim(-0.1, 1.1) # inference print "create model and optimize ..." M = 20 model = vfe.SGPR(X, Y, M, lik='Gaussian') model.optimise(method='adam', maxiter=100000, mb_size=N, adam_lr=0.001) # plot(model) # plt.show() # plt.savefig('/tmp/vfe_gpr_1D_stoc.pdf')
def run_regression_1D_stoc(): np.random.seed(42) print "create dataset ..." N = 200 X = np.random.rand(N, 1) Y = np.sin(12 * X) + 0.5 * np.cos(25 * X) + np.random.randn(N, 1) * 0.2 # plt.plot(X, Y, 'kx', mew=2) def plot(m): xx = np.linspace(-0.5, 1.5, 100)[:, None] mean, var = m.predict_f(xx) zu = m.sgp_layer.zu mean_u, var_u = m.predict_f(zu) plt.figure() plt.plot(X, Y, 'kx', mew=2) plt.plot(xx, mean, 'b', lw=2) plt.fill_between( xx[:, 0], mean[:, 0] - 2 * np.sqrt(var[:, 0]), mean[:, 0] + 2 * np.sqrt(var[:, 0]), color='blue', alpha=0.2) plt.errorbar(zu, mean_u, yerr=2 * np.sqrt(var_u), fmt='ro') plt.xlim(-0.1, 1.1) # inference print "create model and optimize ..." M = 20 model = aep.SGPR(X, Y, M, lik='Gaussian') model.optimise(method='adam', alpha=0.1, maxiter=100000, mb_size=M, adam_lr=0.001) plot(model) plt.show() plt.savefig('/tmp/aep_gpr_1D_stoc.pdf')
def run_step_1D(): np.random.seed(42) print "create dataset ..." N = 200 X = np.random.rand(N, 1) * 3 - 1.5 Y = step(X) # plt.plot(X, Y, 'kx', mew=2) def plot(m): xx = np.linspace(-3, 3, 100)[:, None] mean, var = m.predict_y(xx) zu = m.sgp_layer.zu mean_u, var_u = m.predict_f(zu) plt.figure() plt.plot(X, Y, 'kx', mew=2) plt.plot(xx, mean, 'b', lw=2) plt.fill_between( xx[:, 0], mean[:, 0] - 2 * np.sqrt(var[:, 0]), mean[:, 0] + 2 * np.sqrt(var[:, 0]), color='blue', alpha=0.2) plt.errorbar(zu, mean_u, yerr=2 * np.sqrt(var_u), fmt='ro') no_samples = 20 xx = np.linspace(-3, 3, 500)[:, None] f_samples = m.sample_f(xx, no_samples) for i in range(no_samples): plt.plot(xx, f_samples[:, :, i], linewidth=0.5, alpha=0.5) plt.xlim(-3, 3) # inference print "create model and optimize ..." M = 20 model = aep.SGPR(X, Y, M, lik='Gaussian') model.optimise(method='L-BFGS-B', alpha=0.9, maxiter=2000) plot(model) plt.savefig('/tmp/aep_gpr_step.pdf') # plt.show()
def run_regression_1D_pep_training(stoc=False): np.random.seed(42) print "create dataset ..." N = 200 X = np.random.rand(N, 1) Y = np.sin(12 * X) + 0.5 * np.cos(25 * X) + np.random.randn(N, 1) * 0.2 # plt.plot(X, Y, 'kx', mew=2) def plot(m): xx = np.linspace(-0.5, 1.5, 100)[:, None] mean, var = m.predict_f(xx) zu = m.sgp_layer.zu mean_u, var_u = m.predict_f(zu) plt.figure() plt.plot(X, Y, 'kx', mew=2) plt.plot(xx, mean, 'b', lw=2) plt.fill_between( xx[:, 0], mean[:, 0] - 2 * np.sqrt(var[:, 0]), mean[:, 0] + 2 * np.sqrt(var[:, 0]), color='blue', alpha=0.2) plt.errorbar(zu, mean_u, yerr=2 * np.sqrt(var_u), fmt='ro') plt.xlim(-0.1, 1.1) # inference print "create model and optimize ..." M = 20 alpha = 0.1 model_pep = pep.SGPR_rank_one(X, Y, M, lik='Gaussian') if stoc: mb_size = M fname = '/tmp/gpr_pep_reg_stoc.pdf' adam_lr = 0.005 else: mb_size = N fname = '/tmp/gpr_pep_reg.pdf' adam_lr = 0.05 model_pep.optimise(method='adam', mb_size=mb_size, adam_lr=adam_lr, alpha=alpha, maxiter=2000) plot(model_pep) plt.savefig(fname)
def run_cluster_MC(): import GPy # create dataset print "creating dataset..." N = 100 k1 = GPy.kern.RBF(5, variance=1, lengthscale=1. / np.random.dirichlet(np.r_[10, 10, 10, 0.1, 0.1]), ARD=True) k2 = GPy.kern.RBF(5, variance=1, lengthscale=1. / np.random.dirichlet(np.r_[10, 0.1, 10, 0.1, 10]), ARD=True) k3 = GPy.kern.RBF(5, variance=1, lengthscale=1. / np.random.dirichlet(np.r_[0.1, 0.1, 10, 10, 10]), ARD=True) X = np.random.normal(0, 1, (N, 5)) A = np.random.multivariate_normal(np.zeros(N), k1.K(X), 10).T B = np.random.multivariate_normal(np.zeros(N), k2.K(X), 10).T C = np.random.multivariate_normal(np.zeros(N), k3.K(X), 10).T Y = np.vstack((A, B, C)) labels = np.hstack((np.zeros(A.shape[0]), np.ones( B.shape[0]), np.ones(C.shape[0]) * 2)) # inference print "inference ..." M = 30 D = 5 alpha = 0.5 lvm = aep.SGPLVM(Y, D, M, lik='Gaussian') lvm.optimise(method='adam', adam_lr=0.05, maxiter=2000, alpha=alpha, prop_mode=config.PROP_MC) ls = np.exp(lvm.sgp_layer.ls) print ls inds = np.argsort(ls) plt.figure() mx, vx = lvm.get_posterior_x() plt.scatter(mx[:, inds[0]], mx[:, inds[1]], c=labels) zu = lvm.sgp_layer.zu # plt.plot(zu[:, inds[0]], zu[:, inds[1]], 'ko') # plt.show() plt.savefig('/tmp/gplvm_cluster.pdf')
def run_regression_1D(): np.random.seed(42) print "create dataset ..." N = 200 X = np.random.rand(N, 1) Y = np.sin(12 * X) + 0.5 * np.cos(25 * X) + np.random.randn(N, 1) * 0.2 # plt.plot(X, Y, 'kx', mew=2) def plot(m): xx = np.linspace(-0.5, 1.5, 100)[:, None] mean, var = m.predict_f(xx) zu = m.sgp_layers[0].zu mean_u, var_u = m.predict_f(zu) plt.figure() plt.plot(X, Y, 'kx', mew=2) plt.plot(xx, mean, 'b', lw=2) plt.fill_between( xx[:, 0], mean[:, 0] - 2 * np.sqrt(var[:, 0]), mean[:, 0] + 2 * np.sqrt(var[:, 0]), color='blue', alpha=0.2) plt.errorbar(zu, mean_u, yerr=2 * np.sqrt(var_u), fmt='ro') plt.xlim(-0.1, 1.1) # inference print "create model and optimize ..." M = 20 hidden_size = [2] model = aep.SDGPR_H(X, Y, M, hidden_size, lik='Gaussian') model.optimise(method='L-BFGS-B', alpha=0.5, maxiter=2000) plot(model) plt.show() plt.savefig('/tmp/aep_dgpr_1D.pdf')