def get_parameters(self): """ This function creates some parameters to be used with DBScan. @return: A tuple with the generated parameters and an empty list corresponding to the clusterings. """ run_parameters = [] # (minpts, eps tuples) if "max" in self.parameters["clustering"]["algorithms"]["dbscan"]: max_eps_tries = self.parameters["clustering"]["algorithms"]["dbscan"]["max"] else: max_eps_tries = 10 num_elements = self.distance_matrix.row_length klist = k_scale_gen(math.log(num_elements)) buffer = numpy.empty(num_elements) kdist_matrix = k_dist(klist, buffer, self.distance_matrix) dbscan_param_pairs = dbscanTools.dbscan_param_space_search(self.parameters["clustering"]["evaluation"]["maximum_noise"], max_eps_tries, num_elements, klist, kdist_matrix) +\ zhou_adaptative_determination(kdist_matrix, self.distance_matrix) for (minpts, eps) in dbscan_param_pairs: run_parameter = ParametersGenerator.get_base_parameters() run_parameter["minpts"] = minpts run_parameter["eps"] = eps run_parameters.append(run_parameter) return run_parameters, []
def test_zhou_adaptative_determination(self): distances = CondensedMatrix([ 0., 0., 2., 2., 0., 2., 2., 2., 2., 0.]) buffer = numpy.empty(distances.row_length) k_dist_matrix = k_dist(numpy.array([2,4]), buffer, distances) zhou_params = zhou_adaptative_determination(k_dist_matrix, distances) self.assertItemsEqual(zhou_params,[(1.0, 0.8), (4.0, 2.0)])
def test_zhou_adaptative_determination(self): distances = CondensedMatrix([0., 0., 2., 2., 0., 2., 2., 2., 2., 0.]) buffer = numpy.empty(distances.row_length) k_dist_matrix = k_dist(numpy.array([2, 4]), buffer, distances) zhou_params = zhou_adaptative_determination(k_dist_matrix, distances) self.assertItemsEqual(zhou_params, [(1.0, 0.8), (4.0, 2.0)])