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))