def classifier_liblinear_modular (train_fname, test_fname, label_fname, C, epsilon): from modshogun import RealFeatures, SparseRealFeatures, BinaryLabels from modshogun import LibLinear, L2R_L2LOSS_SVC_DUAL from modshogun import Math_init_random, CSVFile Math_init_random(17) feats_train=RealFeatures(CSVFile(train_fname)) feats_test=RealFeatures(CSVFile(test_fname)) labels=BinaryLabels(CSVFile(label_fname)) svm=LibLinear(C, feats_train, labels) svm.set_liblinear_solver_type(L2R_L2LOSS_SVC_DUAL) svm.set_epsilon(epsilon) svm.set_bias_enabled(True) svm.train() predictions = svm.apply(feats_test) return predictions, svm, predictions.get_labels()
from modshogun import RealFeatures, BinaryLabels from modshogun import LibLinear, L2R_L2LOSS_SVC_DUAL from numpy import random, mean X_train = RealFeatures(random.randn(30, 100)) Y_train = BinaryLabels(random.randn(X_train.get_num_vectors())) results = [] for C1_pow in range(-3, 1): for C2_pow in range(-3, 1): svm = LibLinear() svm.set_bias_enabled(False) svm.set_liblinear_solver_type(L2R_L2LOSS_SVC_DUAL) svm.set_C(10**C1_pow, 10**C2_pow) svm.set_features(X_train) svm.set_labels(Y_train) svm.train() Y_pred = svm.apply_binary(X_train) accuracy = mean(Y_train.get_labels() == Y_pred.get_labels()) print 10**C1_pow, 10**C2_pow, accuracy results.append({"accuracy":accuracy, "svm":svm}) results.sort(key=lambda x:x["accuracy"], reverse=True) best_svm = results[0]["svm"]