def svm_local(isDecision=False, n_predict=0, n_neighbors=5000, isSgd=True):
    start = time.time()
    db_manager = DbManager()
    db_manager.connect('../db/annotated.db')
    print("Start converting train points")
    train_points_tmp = train_points.tolist()
    train_classes_tmp = train_classes.tolist()
    print("Conversion finished in time {0}s".format(time.time()-start))

    predict_classes = []
    for point_id, point_vector in enumerate(test_points):
        if point_id >= 100:
            break
        if point_id % 10 == 0:
            print("Start query test point {0}".format(point_id))

        neighbors = [int(x) for x in db_manager.query_knn('../db/annotated.db', point_id, n_neighbors=n_neighbors)[0].split()]
        neighbor_points = [train_points_tmp[neighbor_id] for neighbor_id in neighbors]
        neighbor_classes = [train_classes_tmp[neighbor_id] for neighbor_id in neighbors]

        svmManager = SvmManager(None, verbose=verbose, isSgd=isSgd)
        svmManager.fit(np.array(neighbor_points), np.array(neighbor_classes), store=False)
        if not isDecision:
            predict_classes.append(svmManager.predict([point_vector])[0]) #only one class result
        else:
            predict_classes.append(svmManager.decision_function([point_vector], n_predict)[0] )

    end = time.time()
    logging.info("testing local svm finished in {0}s with {1}".format(end - start, model_file))
    return predict_classes
def svm_fit_to_file(proba=False):
    start = time.time()
    with open(model_file,"wb") as handle:
        svmManager = SvmManager(handle, verbose=verbose, isSgd=True, proba=proba)
        svmManager.fit(train_points, train_classes)
    end = time.time()
    logging.info("training fit to file finished in {0}s with {1} ".format(end - start, model_file))
def svm_predict_from_file(proba=False, n_predict=5, isDecision=False):
    start = time.time()
    with open(model_file,"rb") as handle:
        svmManager = SvmManager(handle, verbose=verbose, isSgd=True, proba=proba)
        svmManager.load()
        if not proba:
            result = svmManager.predict(test_points)
        elif not isDecision:
            result = svmManager.predict_proba(test_points, n_predict)
        else:
            result = svmManager.decision_function(test_points, n_predict)

    end = time.time()
    logging.info("testing predict from file finished in {0}s with {1}".format(end - start, model_file))
    print("[RESULT LENGTH]", len(result))
    return result