Пример #1
0
def run_test(training_size,
             prediction_size,
             function_name,
             corr_kernel,
             n_cluster,
             prior='GCP'):

    scoring_function = functions[function_name]
    parameter_bounds = all_parameter_bounds[function_name]

    x_training = []
    y_training = []
    for i in range(training_size):
        x = [
            np.random.uniform(parameter_bounds[j][0], parameter_bounds[j][1])
            for j in range(parameter_bounds.shape[0])
        ]
        x_training.append(x)
        y_training.append(scoring_function(x)[0])
    if (isInt):
        x_training, y_training = compute_unique2(
            np.asarray(x_training, dtype=np.int32), np.asarray(y_training))

    candidates = []
    real_y = []
    for i in range(prediction_size):
        x = [
            np.random.uniform(parameter_bounds[j][0], parameter_bounds[j][1])
            for j in range(parameter_bounds.shape[0])
        ]
        candidates.append(x)
        real_y.append(scoring_function(x)[0])
    real_y = np.asarray(real_y)
    if (isInt):
        candidates = np.asarray(candidates, dtype=np.int32)

    if (prior == 'GP'):
        gp = GaussianProcess(theta0=.1 * np.ones(parameter_bounds.shape[0]),
                             thetaL=0.001 * np.ones(parameter_bounds.shape[0]),
                             thetaU=10. * np.ones(parameter_bounds.shape[0]),
                             random_start=5,
                             nugget=nugget)
        gp.fit(x_training, y_training)
        pred = gp.predict(candidates)
        likelihood = gp.reduced_likelihood_function_value_

    else:
        gcp = GaussianCopulaProcess(nugget=nugget,
                                    corr=corr_kernel,
                                    random_start=5,
                                    normalize=True,
                                    coef_latent_mapping=coef_latent_mapping,
                                    n_clusters=n_clusters)
        gcp.fit(x_training, y_training)
        likelihood = gcp.reduced_likelihood_function_value_

        if not (integratedPrediction):
            pred = gcp.predict(candidates)
        else:
            pred, _, _, _ = gcp.predict(candidates,
                                        eval_MSE=True,
                                        eval_confidence_bounds=True,
                                        integratedPrediction=True)

    mse = np.mean((pred - real_y)**2.)
    # Normalize
    mse = mse / (np.std(real_y)**2.)
    likelihood = np.exp(likelihood)
    return [mse, likelihood]
Пример #2
0
def find_best_candidate_with_GCP(X,
                                 raw_Y,
                                 mean_Y,
                                 std_Y,
                                 args,
                                 rand_candidates,
                                 verbose,
                                 acquisition_function='Simple'):
    corr_kernel = args[0]
    n_clusters = args[1]
    GCP_mapWithNoise = args[2]
    GCP_useAllNoisyY = args[3]
    GCP_model_noise = args[4]
    nugget = args[5]
    GCP_upperBound_coef = args[6]

    mean_gcp = GaussianCopulaProcess(nugget=nugget,
                                     corr=corr_kernel,
                                     random_start=5,
                                     n_clusters=n_clusters,
                                     mapWithNoise=GCP_mapWithNoise,
                                     useAllNoisyY=GCP_useAllNoisyY,
                                     model_noise=GCP_model_noise,
                                     try_optimize=True)
    mean_gcp.fit(X, mean_Y, raw_Y, obs_noise=std_Y)

    if (verbose == 2):
        print('GCP theta :' + str(mean_gcp.theta))

    if (acquisition_function == 'Simple'):

        predictions = mean_gcp.predict(rand_candidates,
                                       eval_MSE=False,
                                       eval_confidence_bounds=False)
        best_candidate_idx = np.argmax(predictions)
        best_candidate = rand_candidates[best_candidate_idx]
        if (verbose == 2):
            print 'Hopefully :', best_candidate, predictions[
                best_candidate_idx]

    elif (acquisition_function == 'UCB'):

        predictions,MSE,boundL,boundU = \
          mean_gcp.predict(rand_candidates,eval_MSE=True,eval_confidence_bounds=True,coef_bound = GCP_upperBound_coef)
        best_candidate_idx = np.argmax(boundU)
        best_candidate = rand_candidates[best_candidate_idx]
        if (verbose == 2):
            print 'Hopefully :', best_candidate, predictions[
                best_candidate_idx], boundU[best_candidate_idx]

    elif (acquisition_function == 'MaxLowerBound'):

        predictions,MSE,boundL,boundU = \
          mean_gcp.predict(rand_candidates,eval_MSE=True,eval_confidence_bounds=True,coef_bound = GCP_upperBound_coef)
        best_candidate_idx = np.argmax(boundL)
        best_candidate = rand_candidates[best_candidate_idx]
        if (verbose == 2):
            print 'Hopefully :', best_candidate, predictions[
                best_candidate_idx], boundL[best_candidate_idx], boundU[
                    best_candidate_idx]

    elif (acquisition_function == 'EI'):

        predictions,MSE = \
          mean_gcp.predict(rand_candidates,eval_MSE=True,transformY=False) # we want the predictions in the GP space
        y_best = np.max(mean_Y)
        sigma = np.sqrt(MSE)
        ei = [ gcp_compute_ei((rand_candidates[i]-mean_gcp.X_mean)/mean_gcp.X_std,predictions[i],sigma[i],y_best, \
            mean_gcp.mapping,mean_gcp.mapping_derivative) \
          for i in range(rand_candidates.shape[0]) ]

        best_candidate_idx = np.argmax(ei)
        best_candidate = rand_candidates[best_candidate_idx]
        if (verbose == 2):
            print 'Hopefully :', best_candidate, predictions[
                best_candidate_idx], ei[best_candidate_idx]

    else:
        print('Acquisition function not handled...')

    return best_candidate
Пример #3
0
                                n_clusters=1,
                                coef_latent_mapping = 0.1,
                                try_optimize=True)
gcp.fit(params,m_o,output,obs_noise=std_o)

gp = GaussianProcess(theta0= 0.1 ,
                     thetaL = 0.001,
                     random_start=1,
                     thetaU = 10.,
                     nugget=1e-10)
gp.fit(params,m_o)
gp_pred,sigma = gp.predict(rand_candidates,eval_MSE=True)
gp_bu = np.asarray(gp_pred) + 1.96*np.sqrt(sigma)
print gp.theta_

predictions,mse,bl,bu = gcp.predict(rand_candidates,eval_MSE=True,eval_confidence_bounds=True,integratedPrediction= False,coef_bound=.5)

params_bis = (10*params[:,3] +  5* params[:,0] + params[:,1]) / 10.
params_bis2 = params[:,2] + (3.* params[:,4] / 10. )

cand_bis = (10*rand_candidates[:,3] +  5* rand_candidates[:,0] + rand_candidates[:,1]) / 10.
cand_bis2 = rand_candidates[:,2] + (3.* rand_candidates[:,4] / 10. )

fig = plt.figure()
ax = fig.add_subplot(1,1,1, projection='3d')
Z_min = np.min(m_o)
ax.scatter(params_bis2,params_bis,\
                                    m_o, c=-np.exp((m_o-Z_min)**5.),cmap=cm.hot,marker='o')
ax.plot(cand_bis2,cand_bis,predictions,'b+')
ax.plot(cand_bis2,cand_bis,gp_pred,'g+')
Пример #4
0
                                corr=corr_kernel,
                                random_start=5,
                                n_clusters=n_clusters,
                                coef_latent_mapping=coef_latent_mapping,
                                mapWithNoise=GCP_mapWithNoise,
                                useAllNoisyY=False,
                                model_noise=None,
                                try_optimize=True)
    gcp.fit(x_training, y_training)

    print '\nGCP fitted'
    print 'Theta', gcp.theta
    print 'Likelihood', np.exp(gcp.reduced_likelihood_function_value_)

    predictions,MSE,boundL,boundU = \
         gcp.predict(candidates,eval_MSE=True,eval_confidence_bounds=True,coef_bound = 1.96,integratedPrediction=integratedPrediction)

    pred_error = np.mean((predictions - np.asarray(real_y))**2.)
    print 'MSE', pred_error
    print 'Normalized error', np.sqrt(pred_error) / np.std(real_y)

    pred, MSE_bis = gcp.predict(candidates,
                                eval_MSE=True,
                                transformY=False,
                                eval_confidence_bounds=False,
                                coef_bound=1.96)

    t_f_plot = [
        gcp.mapping(candidates[i], real_y[i], normalize=True)
        for i in range(real_y.shape[0])
    ]
Пример #5
0
								corr = corr_kernel,
								random_start = 5,
								n_clusters = n_clusters,
	                            coef_latent_mapping = coef_latent_mapping,
							 	mapWithNoise = GCP_mapWithNoise,
				 				useAllNoisyY = False,
				 				model_noise = None,
								try_optimize = True)
	gcp.fit(x_training,y_training)

	print '\nGCP fitted'
	print 'Theta', gcp.theta
	print 'Likelihood', np.exp(gcp.reduced_likelihood_function_value_)

	predictions,MSE,boundL,boundU = \
						gcp.predict(candidates,eval_MSE=True,eval_confidence_bounds=True,coef_bound = 1.96,integratedPrediction=integratedPrediction)

	pred_error = np.mean( (predictions - np.asarray(real_y) ) **2. )
	print 'MSE', pred_error / (np.std(real_y) **2.)

	idx = np.argsort(candidates[:,0])
	s_candidates = candidates[idx,0]
	s_boundL = boundL[idx]
	s_boundU = boundU[idx]

	pred,MSE_bis = gcp.predict(np.atleast_2d(s_candidates).T,eval_MSE=True,transformY=False,eval_confidence_bounds=False,coef_bound = 1.96)
	gp_boundL = pred - 1.96*np.sqrt(MSE_bis)
	gp_boundU = pred + 1.96*np.sqrt(MSE_bis)
	t_f_plot =  [gcp.mapping(abs[i],f_plot[i],normalize=True) for i in range(len(f_plot))]
	t_y_training =  [gcp.mapping(x_training[i],y_training[i],normalize=True) for i in range(len(y_training))]
Пример #6
0
	x_density_plot = (np.asarray ( range(np.int(m *100.- 100.*(s)*10.),np.int(m*100. + 100.*(s)*10.)) ) / 100. - y_mean)/ y_std


	ax1 = fig1.add_subplot(n_rows,2,n_clusters)
	for i in range(gcp.n_clusters):
		plt_density_gcp = gcp.density_functions[i](x_density_plot)
		if(n_clusters > 1):
			l = 'Cluster ' + str(centers[i])
		else:
			l = 'KDE estimation'
		ax1.plot(x_density_plot*y_std + y_mean,plt_density_gcp,label=l)
	ax1.legend()
	ax1.set_title('n_clusters == ' + str(n_clusters) )

	candidates = np.atleast_2d(range(80)).T * 5
	prediction = gcp.predict(candidates)

	# plot results
	abs = range(0,400)
	f_plot = [scoring_function(i) for i in abs]
	ax2 = fig2.add_subplot(n_rows,2,n_clusters)
	plt.plot(abs,f_plot)
	plt.plot(x_training,y_training,'bo')
	#plt.plot(candidates,simple_prediction,'go',label='Simple prediction')
	plt.plot(candidates,prediction,'r+',label='n_clusters == ' + str(n_clusters))
	plt.axis([0,400,0,1.])
	ax2.set_title('Likelihood = ' + str(likelihood))
	plt.legend()

	mapping_functions_plot.append( [gcp.mapping(200,mf_plt_axis[i],normalize=True) for i in range(100)])
## with GP ##
	gcp = GaussianCopulaProcess(nugget = nugget,
								corr = corr_kernel,
								random_start = 5,
								n_clusters = n_clusters,
							 	mapWithNoise = GCP_mapWithNoise,
				 				useAllNoisyY = False,
				 				model_noise = model_noise ,
								try_optimize = True)
	gcp.fit(x_training,y_training,y_detailed,obs_noise=noise_obs)

	print 'GCP fitted'
	print 'Theta', gcp.theta

	predictions,MSE,boundL,boundU = \
						gcp.predict(abs,eval_MSE=True,eval_confidence_bounds=True,coef_bound = 1.96)

	pred,MSE_bis = gcp.predict(abs,eval_MSE=True,transformY=False,eval_confidence_bounds=False,coef_bound = 1.96)
	gp_boundL = pred - 1.96*np.sqrt(MSE_bis)
	gp_boundU = pred + 1.96*np.sqrt(MSE_bis)
	t_f_plot =  [gcp.mapping(abs[i],f_plot[i],normalize=True) for i in range(len(f_plot))]
	t_y_training =  [gcp.mapping(x_training[i],y_training[i],normalize=True) for i in range(len(y_training))]
	t_all_y_training =  [gcp.mapping(all_x[i],array_y_detailed[i],normalize=True) for i in range(array_y_detailed.shape[0])]

	print pred.shape
	idx = np.argsort(abs[:,0])
	s_candidates = abs[idx,0]
	s_boundL = boundL[idx]
	s_boundU = boundU[idx]

    gcp = GaussianCopulaProcess(nugget=nugget,
                                corr=corr_kernel,
                                random_start=5,
                                n_clusters=n_clusters,
                                mapWithNoise=GCP_mapWithNoise,
                                useAllNoisyY=False,
                                model_noise=model_noise,
                                try_optimize=True)
    gcp.fit(x_training, y_training, y_detailed, obs_noise=noise_obs)

    print 'GCP fitted'
    print 'Theta', gcp.theta

    predictions,MSE,boundL,boundU = \
         gcp.predict(abs,eval_MSE=True,eval_confidence_bounds=True,coef_bound = 1.96)

    pred, MSE_bis = gcp.predict(abs,
                                eval_MSE=True,
                                transformY=False,
                                eval_confidence_bounds=False,
                                coef_bound=1.96)
    gp_boundL = pred - 1.96 * np.sqrt(MSE_bis)
    gp_boundU = pred + 1.96 * np.sqrt(MSE_bis)
    t_f_plot = [
        gcp.mapping(abs[i], f_plot[i], normalize=True)
        for i in range(len(f_plot))
    ]
    t_y_training = [
        gcp.mapping(x_training[i], y_training[i], normalize=True)
        for i in range(len(y_training))
Пример #9
0
                     (s) * 10.), np.int(m * 100. + 100. *
                                        (s) * 10.))) / 100. - y_mean) / y_std

    ax1 = fig1.add_subplot(n_rows, 2, n_clusters)
    for i in range(gcp.n_clusters):
        plt_density_gcp = gcp.density_functions[i](x_density_plot)
        if (n_clusters > 1):
            l = 'Cluster ' + str(centers[i])
        else:
            l = 'KDE estimation'
        ax1.plot(x_density_plot * y_std + y_mean, plt_density_gcp, label=l)
    ax1.legend()
    ax1.set_title('n_clusters == ' + str(n_clusters))

    candidates = np.atleast_2d(range(80)).T * 5
    prediction = gcp.predict(candidates)

    # plot results
    abs = range(0, 400)
    f_plot = [scoring_function(i) for i in abs]
    ax2 = fig2.add_subplot(n_rows, 2, n_clusters)
    plt.plot(abs, f_plot)
    plt.plot(x_training, y_training, 'bo')
    #plt.plot(candidates,simple_prediction,'go',label='Simple prediction')
    plt.plot(candidates,
             prediction,
             'r+',
             label='n_clusters == ' + str(n_clusters))
    plt.axis([0, 400, 0, 1.])
    ax2.set_title('Likelihood = ' + str(likelihood))
    plt.legend()
Пример #10
0
        mean_gcp = GaussianCopulaProcess(nugget=nugget,
                                         corr=corr_kernel,
                                         random_start=5,
                                         n_clusters=n_clusters,
                                         mapWithNoise=GCP_mapWithNoise,
                                         useAllNoisyY=GCP_useAllNoisyY,
                                         model_noise=GCP_model_noise,
                                         try_optimize=True)
        mean_gcp.fit(parameters,
                     mean_outputs,
                     raw_outputs,
                     obs_noise=std_outputs)

        if (acquisition_function == 'UCB'):
            predictions,MSE,boundL,boundU = \
              mean_gcp.predict(rand_candidates,eval_MSE=True,eval_confidence_bounds=True,coef_bound = GCP_upperBound_coef)
            best_candidate_idx = np.argmax(boundU)
            best_candidate = rand_candidates[best_candidate_idx]

            idx = np.argsort(rand_candidates[:, 0])
            s_candidates = rand_candidates[idx, 0]
            s_boundL = boundL[idx]
            s_boundU = boundU[idx]
            s_pred = predictions[idx]

            ax = fig.add_subplot(n_rows, 3, i + 1)
            ax.plot(abs, f_plot)
            l1, = ax.plot(rand_candidates,
                          predictions,
                          'r+',
                          label='GCP predictions')
Пример #11
0
def run_test(training_size, prediction_size, function_name, corr_kernel, n_cluster, prior="GCP"):

    scoring_function = functions[function_name]
    parameter_bounds = all_parameter_bounds[function_name]

    x_training = []
    y_training = []
    for i in range(training_size):
        x = [
            np.random.uniform(parameter_bounds[j][0], parameter_bounds[j][1]) for j in range(parameter_bounds.shape[0])
        ]
        x_training.append(x)
        y_training.append(scoring_function(x)[0])
    if isInt:
        x_training, y_training = compute_unique2(np.asarray(x_training, dtype=np.int32), np.asarray(y_training))

    candidates = []
    real_y = []
    for i in range(prediction_size):
        x = [
            np.random.uniform(parameter_bounds[j][0], parameter_bounds[j][1]) for j in range(parameter_bounds.shape[0])
        ]
        candidates.append(x)
        real_y.append(scoring_function(x)[0])
    real_y = np.asarray(real_y)
    if isInt:
        candidates = np.asarray(candidates, dtype=np.int32)

    if prior == "GP":
        gp = GaussianProcess(
            theta0=0.1 * np.ones(parameter_bounds.shape[0]),
            thetaL=0.001 * np.ones(parameter_bounds.shape[0]),
            thetaU=10.0 * np.ones(parameter_bounds.shape[0]),
            random_start=5,
            nugget=nugget,
        )
        gp.fit(x_training, y_training)
        pred = gp.predict(candidates)
        likelihood = gp.reduced_likelihood_function_value_

    else:
        gcp = GaussianCopulaProcess(
            nugget=nugget,
            corr=corr_kernel,
            random_start=5,
            normalize=True,
            coef_latent_mapping=coef_latent_mapping,
            n_clusters=n_clusters,
        )
        gcp.fit(x_training, y_training)
        likelihood = gcp.reduced_likelihood_function_value_

        if not (integratedPrediction):
            pred = gcp.predict(candidates)
        else:
            pred, _, _, _ = gcp.predict(
                candidates, eval_MSE=True, eval_confidence_bounds=True, integratedPrediction=True
            )

    mse = np.mean((pred - real_y) ** 2.0)
    # Normalize
    mse = mse / (np.std(real_y) ** 2.0)
    likelihood = np.exp(likelihood)
    return [mse, likelihood]
Пример #12
0
def find_best_candidate_with_GCP(X, raw_Y, mean_Y, std_Y, args, rand_candidates,verbose,acquisition_function='Simple'):
	corr_kernel = args[0]
	n_clusters = args[1]
	GCP_mapWithNoise = args[2]
	GCP_useAllNoisyY = args[3]
	GCP_model_noise = args[4]
	nugget = args[5]
	GCP_upperBound_coef = args[6]

	mean_gcp = GaussianCopulaProcess(nugget = nugget,
									corr = corr_kernel,
									random_start = 5,
									n_clusters = n_clusters,
								 	mapWithNoise = GCP_mapWithNoise,
					 				useAllNoisyY = GCP_useAllNoisyY,
					 				model_noise = GCP_model_noise,
									try_optimize = True)
	mean_gcp.fit(X,mean_Y,raw_Y,obs_noise=std_Y)

	if(verbose == 2):
		print ('GCP theta :'+str(mean_gcp.theta))
				
	if(acquisition_function=='Simple'):
	
		predictions = mean_gcp.predict(rand_candidates,eval_MSE=False,eval_confidence_bounds=False)
		best_candidate_idx = np.argmax(predictions)
		best_candidate = rand_candidates[best_candidate_idx]
		if(verbose == 2):
			print 'Hopefully :', best_candidate, predictions[best_candidate_idx]	
	
	elif(acquisition_function=='UCB'):
	
		predictions,MSE,boundL,boundU = \
				mean_gcp.predict(rand_candidates,eval_MSE=True,eval_confidence_bounds=True,coef_bound = GCP_upperBound_coef)
		best_candidate_idx = np.argmax(boundU)
		best_candidate = rand_candidates[best_candidate_idx]
		if(verbose == 2):
			print 'Hopefully :', best_candidate, predictions[best_candidate_idx], boundU[best_candidate_idx]

	elif(acquisition_function=='MaxLowerBound'):
	
		predictions,MSE,boundL,boundU = \
				mean_gcp.predict(rand_candidates,eval_MSE=True,eval_confidence_bounds=True,coef_bound = GCP_upperBound_coef)
		best_candidate_idx = np.argmax(boundL)
		best_candidate = rand_candidates[best_candidate_idx]
		if(verbose == 2):
			print 'Hopefully :', best_candidate, predictions[best_candidate_idx], boundL[best_candidate_idx],boundU[best_candidate_idx]

	elif(acquisition_function=='EI'):
	
		predictions,MSE = \
				mean_gcp.predict(rand_candidates,eval_MSE=True,transformY=False) # we want the predictions in the GP space
		y_best = np.max(mean_Y)
		sigma = np.sqrt(MSE)
		ei = [ gcp_compute_ei((rand_candidates[i]-mean_gcp.X_mean)/mean_gcp.X_std,predictions[i],sigma[i],y_best, \
						mean_gcp.mapping,mean_gcp.mapping_derivative) \
				for i in range(rand_candidates.shape[0]) ]

		best_candidate_idx = np.argmax(ei)
		best_candidate = rand_candidates[best_candidate_idx]
		if(verbose == 2):
			print 'Hopefully :', best_candidate, predictions[best_candidate_idx], ei[best_candidate_idx]

	else:
		print('Acquisition function not handled...')

	return best_candidate
Пример #13
0
	gcp = GaussianCopulaProcess(nugget = nugget,
								corr = corr_kernel,
								random_start = 5,
								n_clusters = n_clusters,
	                            coef_latent_mapping = coef_latent_mapping,
							 	mapWithNoise = GCP_mapWithNoise,
				 				useAllNoisyY = False,
				 				model_noise = None,
								try_optimize = True)
	gcp.fit(x_training,y_training)

	print '\nGCP fitted'
	print 'Theta', gcp.theta
	print 'Likelihood', np.exp(gcp.reduced_likelihood_function_value_)

	predictions = gcp.predict(candidates,eval_MSE=False,eval_confidence_bounds=False,coef_bound = 1.96,integratedPrediction=False)

	pred,mse = gcp.predict(candidates,eval_MSE=True,transformY=False)
	y_best =np.max(y_training)
	sigma = np.sqrt(mse)
	ei = [ utils.compute_ei((candidates[i]- gcp.X_mean) / gcp.X_std,pred[i],sigma[i],y_best, \
	                gcp.mapping,gcp.mapping_derivative) \
	        for i in range(candidates.shape[0]) ]
	ei = np.asarray(ei)
	print ei.shape

	for i in range(abs.shape[0]):
		f.write( str(candidates[i,0]) + ',' + str(f_plot[i]) +',' + str(predictions[i]) + ',' + str(ei[i]) +'\n' )
	f.close()

	if(save_plots):
Пример #14
0
	rand_candidates = utils.sample_candidates(n_candidates,parameter_bounds,isInt)
	
	if(sampling_model == 'GCP'):
		mean_gcp = GaussianCopulaProcess(nugget = nugget,
										corr = corr_kernel,
										random_start = 5,
										n_clusters = n_clusters,
									 	mapWithNoise = GCP_mapWithNoise,
						 				useAllNoisyY = GCP_useAllNoisyY,
						 				model_noise = GCP_model_noise,
										try_optimize = True)
		mean_gcp.fit(parameters,mean_outputs,raw_outputs,obs_noise=std_outputs)

		if(acquisition_function == 'UCB'):
			predictions,MSE,boundL,boundU = \
					mean_gcp.predict(rand_candidates,eval_MSE=True,eval_confidence_bounds=True,coef_bound = GCP_upperBound_coef)
			best_candidate_idx = np.argmax(boundU)
			best_candidate = rand_candidates[best_candidate_idx]

			idx = np.argsort(rand_candidates[:,0])
			s_candidates = rand_candidates[idx,0]
			s_boundL = boundL[idx]
			s_boundU = boundU[idx]
			s_pred = predictions[idx]

			ax = fig.add_subplot(n_rows,3,i+1)
			ax.plot(abs,f_plot)
			l1, = ax.plot(rand_candidates,predictions,'r+',label='GCP predictions')
			l2,= ax.plot(parameters,mean_outputs,'ro',label='GCP query points')
			l3, = ax.plot(X_init,Y_init,'bo',label='Random initialization')
			ax.fill(np.concatenate([s_candidates,s_candidates[::-1]]),np.concatenate([s_boundL,s_boundU[::-1]]),alpha=.5, fc='c', ec='None')
Пример #15
0
    gcp.fit(x_training, y_training)
    likelihood = gcp.reduced_likelihood_function_value_
    print 'LGCP coef ' + str(coefs[j]) + ' fitted'
    print 'Theta', gcp.theta
    print 'Likelihood', likelihood

    if (n_clusters > 1):
        centers = np.asarray([
            gcp.centroids[i][0] * gcp.X_std + gcp.X_mean
            for i in range(n_clusters)
        ],
                             dtype=np.int32)

    candidates = np.atleast_2d(range(80)).T * 5
    #simple_prediction = gcp.predict(candidates,integratedPrediction=False)
    prediction = gcp.predict(candidates,
                             integratedPrediction=integratedPrediction)
    abs = range(0, 400)

    # plot mapping function
    ax1 = fig1.add_subplot(n_rows, 2, j + 1)
    for x in candidates[:, 0]:
        ax1.plot(mf_plt_axis, [
            gcp.mapping(x, mf_plt_axis[i], normalize=True)[0]
            for i in range(100)
        ])
    ax1.set_title('coef ' + str(coefs[j]))

    # plot results
    f_plot = [scoring_function(i) for i in abs]
    ax2 = fig2.add_subplot(n_rows, 2, j + 1)
    plt.plot(abs, f_plot)
Пример #16
0
	                            random_start=5,
	                            normalize = True,
	                            coef_latent_mapping = coefs[j],
	                            n_clusters=n_clusters)
	gcp.fit(x_training,y_training)
	likelihood = gcp.reduced_likelihood_function_value_
	print 'LGCP coef '+str(coefs[j])+' fitted'
	print 'Theta', gcp.theta
	print 'Likelihood',likelihood

	if(n_clusters > 1):
		centers = np.asarray([gcp.centroids[i][0]* gcp.X_std + gcp.X_mean for i in range(n_clusters) ], dtype=np.int32)

	candidates = np.atleast_2d(range(80)).T * 5
	#simple_prediction = gcp.predict(candidates,integratedPrediction=False)
	prediction = gcp.predict(candidates,integratedPrediction=integratedPrediction)
	abs = range(0,400)

	# plot mapping function
	ax1 = fig1.add_subplot(n_rows,2,j+1)
	for x in candidates[:,0]:
		ax1.plot(mf_plt_axis,[gcp.mapping(x,mf_plt_axis[i],normalize=True)[0] for i in range(100)])
	ax1.set_title('coef ' + str(coefs[j]) )

	# plot results
	f_plot = [scoring_function(i) for i in abs]
	ax2 = fig2.add_subplot(n_rows,2,j+1)
	plt.plot(abs,f_plot)
	plt.plot(x_training,y_training,'bo')
	#plt.plot(candidates,simple_prediction,'go',label='Simple prediction')
	plt.plot(candidates,prediction,'r+',label='n_clusters == ' + str(n_clusters))