def kmedians(sample, centers, tolerance): pointer_data = create_pointer_data(sample) pointer_centers = create_pointer_data(centers) ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64) package = ccore.kmedians_algorithm(pointer_data, pointer_centers, c_double(tolerance)) result = extract_pyclustering_package(package) ccore.free_pyclustering_package(package) return result
def xmeans(sample, centers, kmax, tolerance, criterion): pointer_data = create_pointer_data(sample) pointer_centers = create_pointer_data(centers) ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64) ccore.xmeans_algorithm.restype = POINTER(pyclustering_package) package = ccore.xmeans_algorithm(pointer_data, pointer_centers, c_size_t(kmax), c_double(tolerance), c_uint(criterion)) result = extract_pyclustering_package(package) ccore.free_pyclustering_package(package) return result
def rock(sample, eps, number_clusters, threshold): """ @brief Clustering algorithm ROCK returns allocated clusters and noise that are consisted from input data. @details Calculation is performed via CCORE (C/C++ part of the pyclustering)." @param[in] sample: input data - list of points where each point is represented by list of coordinates. @param[in] eps: connectivity radius (similarity threshold), points are neighbors if distance between them is less than connectivity radius. @param[in] number_clusters: defines number of clusters that should be allocated from the input data set. @param[in] threshold: value that defines degree of normalization that influences on choice of clusters for merging during processing. @return List of allocated clusters, each cluster contains indexes of objects in list of data. """ pointer_data = create_pointer_data(sample); ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64); ccore.rock_algorithm.restype = POINTER(pyclustering_package); package = ccore.rock_algorithm(pointer_data, c_double(eps), c_size_t(number_clusters), c_double(threshold)); list_of_clusters = extract_pyclustering_package(package); ccore.free_pyclustering_package(package); return list_of_clusters;
def cure_algorithm(sample, number_clusters, number_represent_points, compression): pointer_data = create_pointer_data(sample); ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64); ccore.cure_algorithm.restype = POINTER(c_void_p); cure_data_pointer = ccore.cure_algorithm(pointer_data, c_size_t(number_clusters), c_size_t(number_represent_points), c_double(compression)); return cure_data_pointer;
def agglomerative_algorithm(data, number_clusters, link): pointer_data = create_pointer_data(data); ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64); package = ccore.agglomerative_algorithm(pointer_data, c_uint(number_clusters), c_uint(link)); result = extract_pyclustering_package(package); ccore.free_pyclustering_package(package); return result;
def agglomerative_algorithm(data, number_clusters, link): pointer_data = create_pointer_data(data) ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64) package = ccore.agglomerative_algorithm(pointer_data, c_size_t(number_clusters), c_size_t(link)) result = extract_pyclustering_package(package) ccore.free_pyclustering_package(package) return result
def som_simulate(som_pointer, pattern): "Processes input pattern (no learining) and returns index of neuron-winner." "Using index of neuron winner catched object can be obtained using property capture_objects." "(in) som_pointer - pointer to object of self-organized map." "(in) input_pattern - input pattern." "Returns index of neuron-winner." pointer_data = create_pointer_data(pattern); ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64); return ccore.som_simulate(som_pointer, pointer_data);
def som_simulate(som_pointer, pattern): "Processes input pattern (no learining) and returns index of neuron-winner." "Using index of neuron winner catched object can be obtained using property capture_objects." "(in) som_pointer - pointer to object of self-organized map." "(in) input_pattern - input pattern." "Returns index of neuron-winner." pointer_data = create_pointer_data(pattern) ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64) return ccore.som_simulate(som_pointer, pointer_data)
def dbscan(sample, eps, min_neighbors, return_noise=False): pointer_data = create_pointer_data(sample) ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64) package = ccore.dbscan_algorithm(pointer_data, c_double(eps), c_size_t(min_neighbors)) list_of_clusters = extract_pyclustering_package(package) ccore.free_pyclustering_package(package) noise = list_of_clusters[len(list_of_clusters) - 1] list_of_clusters.remove(noise) return (list_of_clusters, noise)
def som_train(som_pointer, data, epochs, autostop): """! @brief Trains self-organized feature map (SOM) using CCORE pyclustering library. @param[in] data (list): Input data - list of points where each point is represented by list of features, for example coordinates. @param[in] epochs (uint): Number of epochs for training. @param[in] autostop (bool): Automatic termination of learining process when adaptation is not occurred. @return (uint) Number of learining iterations. """ pointer_data = create_pointer_data(data); ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64); return ccore.som_train(som_pointer, pointer_data, c_uint(epochs), autostop);
def som_train(som_pointer, data, epochs, autostop): """! @brief Trains self-organized feature map (SOM) using CCORE pyclustering library. @param[in] data (list): Input data - list of points where each point is represented by list of features, for example coordinates. @param[in] epochs (uint): Number of epochs for training. @param[in] autostop (bool): Automatic termination of learining process when adaptation is not occurred. @return (uint) Number of learining iterations. """ pointer_data = create_pointer_data(data) ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64) return ccore.som_train(som_pointer, pointer_data, c_uint(epochs), autostop)
def som_simulate(som_pointer, pattern): """! @brief Processes input pattern (no learining) and returns index of neuron-winner. @details Using index of neuron winner catched object can be obtained using property capture_objects. @param[in] som_pointer (c_pointer): pointer to object of self-organized map. @param[in] pattern (list): input pattern. @return Returns index of neuron-winner. """ pointer_data = create_pointer_data(pattern) ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64) return ccore.som_simulate(som_pointer, pointer_data)
def optics(sample, radius, minimum_neighbors, amount_clusters): amount = amount_clusters; if (amount is None): amount = 0; pointer_data = create_pointer_data(sample); ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64); package = ccore.optics_algorithm(pointer_data, c_double(radius), c_size_t(minimum_neighbors), c_size_t(amount)); results = extract_pyclustering_package(package); ccore.free_pyclustering_package(package); return (results[optics_package_indexer.OPTICS_PACKAGE_INDEX_CLUSTERS], results[optics_package_indexer.OPTICS_PACKAGE_INDEX_NOISE], results[optics_package_indexer.OPTICS_PACKAGE_INDEX_ORDERING], results[optics_package_indexer.OPTICS_PACKAGE_INDEX_RADIUS][0]);
def kmedoids(sample, medoids, tolerance): pointer_data = create_pointer_data(sample) c_medoids = (c_size_t * len(medoids))() c_medoids[:] = medoids[:] medoids_package = pyclustering_package() medoids_package.size = len(medoids) medoids_package.type = pyclustering_type_data.PYCLUSTERING_TYPE_SIZE_T medoids_package.data = cast(c_medoids, POINTER(c_void_p)) ccore = cdll.LoadLibrary(PATH_DLL_CCORE_64) package = ccore.kmedoids_algorithm(pointer_data, pointer(medoids_package), c_double(tolerance)) result = extract_pyclustering_package(package) ccore.free_pyclustering_package(package) return result