Esempio n. 1
0
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()
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
 def predict(self, X, y):
     return svmutil.svm_predict(y.tolist(), X.tolist(), self.model)[1][0]
Esempio n. 6
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)
Esempio n. 7
0
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
    '''
Esempio n. 10
0
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()
Esempio n. 11
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)
Esempio n. 12
0
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