def train_search_user_defined_kernel(): """ Funciton for training and applying grid search for linear+RBF kernel """ print('Start searching user-defined linear+RBF kernel...') with open('%s_search1.txt' % 'udefined', 'w') as f: cost_list = [1e-6, 1e-5, 1e-4, 1e-3, 1e-2] gamma_list = [1e-3, 1e-6, 1e-9] print('Cost: %s\ngamma: %s\n' % (cost_list, gamma_list), file=f) for cost in cost_list: for gamma in gamma_list: try: start = time.time() prob = svm_problem(Y_train, linear_RBF_kernel_train(gamma), isKernel=True) param = svm_parameter('-q -s 0 -t 4 -c %.14f' % cost) model = svm_train(prob, param) pred_label, pred_acc, pred_val = svm_predict( Y_test, linear_RBF_kernel_test(gamma), model) elapsed_time = time.time() - start print('%f,%f,%f,%f' % (cost, gamma, pred_acc[0], elapsed_time), file=f) print([cost, gamma, pred_acc[0], elapsed_time]) except: print('%f,%f(FAIL)' % (cost, gamma), file=f) f.flush()
def train_predict(y_train: np.array, x_train: np.array, y_test: np.array, x_test: np.array, degree: int = 3, c: int = 2): model = svmutil.svm_train(y_train, x_train, f'-r 2 -t 1 -d {degree} -c {c} -q') p_label, p_acc, p_val = svmutil.svm_predict(y_test, x_test, model, '-q') acc, mse, _ = p_acc sv_num = model.l return acc, mse, sv_num
def train_svm(kernel, parameter_for_training=''): """ Train SVM with specific kernel (linear, polynomial, or RBF) """ kernel2int = {'linear': 0, 'polynomial': 1, 'RBF': 2} start = time.time() # set training arguments and training model = svm_train( Y_train, X_train, parameter_for_training + ' -q -s 0 -t %d' % (kernel2int[kernel])) # prediction pred_label, pred_acc, pred_val = svm_predict(Y_test, X_test, model) return pred_acc[0], time.time() - start
def libsvm(lb_tr, ins_tr, lb_te, ins_te): """ libsvm classifier, using libsvm ------------------------------- read normalized libsvm format files from ./dataset output: accu --classification accuracy co --confusion matrix """ rate, param = grid.find_parameters('dataset/YaleB.scale.tr', '-log2c -1,1,1 -log2g -1,1,1') prob = svmutil.svm_problem(lb_tr, ins_tr) param = svmutil.svm_parameter('-c %f -g %f' % (param['c'], param['g'])) m = svmutil.svm_train(prob, param) p_label, p_acc, p_val = svmutil.svm_predict(lb_te, ins_te, m) co = met.confusion_matrix(lb_te, p_label) accu = p_acc[0] return accu, co
def predict(self, X, y): return svmutil.svm_predict(y.tolist(), X.tolist(), self.model)[1][0]
def predictByFile(test_file_name, model): y, X = svmutil.svm_read_problem(test_file_name) p_label, p_acc, p_val = svmutil.svm_predict(y, X, model) print len(p_label)
def predict(f_vector, model): X = [f_vector] y = [0] p_label, p_acc, p_val = svmutil.svm_predict(y, X, model) return p_label
files = [el for el in files if '.npy' in el] files = [el for el in files if 'Val' not in el] dat_list = [np.load(base_dir + el, allow_pickle=True) for el in files] k = 20 holdout = 0 y, x, y_test, x_test = form_svm_input(dat_list, k, holdout) # train SVM #y, x = scipy.asarray(Y), scipy.asarray(X) #y_test, x_test = scipy.asarray(Y_test), scipy.asarray(X_test) x = scipy.transpose(x) #x_test = scipy.transpose(x_test) prob = svmutil.svm_problem(y, x) #param = svmutil.svm_parameter('-s 1 -t 1 -c 1 -n .05 -b 0 -m 10240') #1 works best, cost of 100 seems good (.000001 multiclass) param = svmutil.svm_parameter('-t 1 -c .000001 -b 0') m = svmutil.svm_train(prob, param) #label = svmutil.svm_predict(y_test, x_test, m) files = os.listdir(base_dir) files = [el for el in files if '.npy' in el] files = [el for el in files if 'Val' in el] dat_list = [np.load(base_dir + el, allow_pickle=True) for el in files] y_test, x_test, dc1, dc2 = form_svm_input(dat_list, k, 0) x_test = scipy.transpose(x_test) label = svmutil.svm_predict(y_test, x_test, m) print(confusion_matrix(label[0], y_test))
train_prob = svm_problem(seed_docs_cls, seed_docs_theta) seed_docs_svm_mdl = svm_train(train_prob, train_param) # # SVM prediction for all the documents in the corpus # num_corpus_docs = len(features) # svm_labels, _, svm_decision_values = svm_predict([0]*num_corpus_docs, # features, seed_docs_svm_mdl, # '-b 0 -q') # svm_prediction = [[doc_id, svm_label, svm_decision_values[doc_id][0]] # for doc_id, svm_label in enumerate(svm_labels)] # SVM prediction only for the test documents num_test_docs = len(test_doc_ids) svm_labels, _, svm_decision_values = svm_predict([0]*num_test_docs, test_docs_features, seed_docs_svm_mdl, '-b 0 -q') svm_prediction = [[doc_id, svm_labels[i], svm_decision_values[i][0]] for i, doc_id in enumerate(test_doc_ids)] return C_g_dict, svm_prediction # [doc_id, svm_class_label, svm_decision_value] def eval_prediction(doc_true_class_ids, doc_prediction): ''' doc_prediction: doc_id, predicted_class, prediction_score '''
y1, x_test_precomputed = svmutil.svm_read_problem('test_precomputed.csv') for kernel_type, opts in options.items(): print('\tkernel type: {0}\n\t'.format(kernel_type), end='') tic() if (train_flag): m[kernel_type] = svmutil.svm_train(prob, opts) svmutil.svm_save_model('model/' + kernel_type + '.model', m[kernel_type]) else: m[kernel_type] = svmutil.svm_load_model('model/' + kernel_type + '.model') train_time[kernel_type] = toc() tic() p_label[kernel_type], p_acc[kernel_type], p_val[kernel_type] = \ svmutil.svm_predict(y_test, x_test, m[kernel_type]) test_time[kernel_type] = toc() print('\tresult(acc, mse, scc): {0}\n'.format(p_acc[kernel_type])) for kernel_type, opts in options_precomputed.items(): print('\tkernel type: {0}\n\t'.format(kernel_type), end='') tic() if (train_flag): m[kernel_type] = svmutil.svm_train(prob_precomputed, opts) svmutil.svm_save_model('model/' + kernel_type + '.model', m[kernel_type]) else: m[kernel_type] = svmutil.svm_load_model('model/' + kernel_type + '.model') train_time[kernel_type] = toc() tic()
def predictByFile( test_file_name, model ): y, X = svmutil.svm_read_problem( test_file_name ) p_label, p_acc, p_val = svmutil.svm_predict(y, X, model) print len(p_label)
def predict( f_vector, model ): X = [ f_vector ] y = [ 0 ] p_label, p_acc, p_val = svmutil.svm_predict(y, X, model) return p_label