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