def variational_classifier_modular(kl_inference,train_fname=traindat,test_fname=testdat,
	label_fname=label_binary_traindat,kernel_log_sigma=0,kernel_log_scale=0,noise_factor=1e-5,
	min_coeff_kernel=1e-2,max_attempt=0):
	from math import exp
	features_train=RealFeatures(CSVFile(train_fname))
	labels_train=BinaryLabels(CSVFile(label_fname))

	likelihood=LogitDVGLikelihood()
	error_eval=ErrorRateMeasure()
	mean_func=ConstMean()
	kernel_sigma=2*exp(2*kernel_log_sigma);
	kernel_func=GaussianKernel(10, kernel_sigma)

	inf=kl_inference(kernel_func, features_train, mean_func, labels_train, likelihood)
	try:
		inf.set_noise_factor(noise_factor)
		inf.set_min_coeff_kernel(min_coeff_kernel)
		inf.set_max_attempt(max_attempt)
	except:
		pass
	inf.set_scale(exp(kernel_log_scale))
	gp=GaussianProcessClassification(inf)
	gp.train()
	pred_labels_train=gp.apply_binary(features_train)
	error_train=error_eval.evaluate(pred_labels_train, labels_train)
	#print "\nInference name:%s"%inf.get_name(),
	#print "marginal likelihood:%.10f"%inf.get_negative_log_marginal_likelihood(),
	#print "Training error %.4f"%error_train
	return pred_labels_train, gp, pred_labels_train.get_labels()
Esempio n. 2
0
def variational_classifier_modular(kl_inference,
                                   train_fname=traindat,
                                   test_fname=testdat,
                                   label_fname=label_binary_traindat,
                                   kernel_log_sigma=0,
                                   kernel_log_scale=0,
                                   noise_factor=1e-5,
                                   min_coeff_kernel=1e-2,
                                   max_attempt=0):
    from math import exp
    features_train = RealFeatures(CSVFile(train_fname))
    labels_train = BinaryLabels(CSVFile(label_fname))

    likelihood = LogitDVGLikelihood()
    error_eval = ErrorRateMeasure()
    mean_func = ConstMean()
    kernel_sigma = 2 * exp(2 * kernel_log_sigma)
    kernel_func = GaussianKernel(10, kernel_sigma)

    inf = kl_inference(kernel_func, features_train, mean_func, labels_train,
                       likelihood)
    try:
        inf.set_noise_factor(noise_factor)
        inf.set_min_coeff_kernel(min_coeff_kernel)
        inf.set_max_attempt(max_attempt)
    except:
        pass
    inf.set_scale(exp(kernel_log_scale))
    gp = GaussianProcessClassification(inf)
    gp.train()
    pred_labels_train = gp.apply_binary(features_train)
    error_train = error_eval.evaluate(pred_labels_train, labels_train)
    #print "\nInference name:%s"%inf.get_name(),
    #print "marginal likelihood:%.10f"%inf.get_negative_log_marginal_likelihood(),
    #print "Training error %.4f"%error_train
    return pred_labels_train, gp, pred_labels_train.get_labels()