File: clique_example.py

package info (click to toggle)
python-pyclustering 0.10.1.2-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 11,128 kB
  • sloc: cpp: 38,888; python: 24,311; sh: 384; makefile: 105
file content (73 lines) | stat: -rwxr-xr-x 2,605 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
"""!

@brief Examples of usage and demonstration of abilities of CLIQUE algorithm in cluster analysis.

@authors Andrei Novikov (pyclustering@yandex.ru)
@date 2014-2020
@copyright BSD-3-Clause

"""


import os

from pyclustering.cluster import cluster_visualizer
from pyclustering.cluster.clique import clique, clique_visualizer

from pyclustering.utils import read_sample

from pyclustering.samples.definitions import SIMPLE_SAMPLES, FCPS_SAMPLES


def template_clustering(data_path, intervals, density_threshold, **kwargs):
    print("Sample: '%s'." % os.path.basename(data_path))

    data = read_sample(data_path)

    clique_instance = clique(data, intervals, density_threshold)
    clique_instance.process()

    clusters = clique_instance.get_clusters()
    noise = clique_instance.get_noise()
    cells = clique_instance.get_cells()

    print([len(cluster) for cluster in clusters])

    clique_visualizer.show_grid(cells, data)

    visualizer = cluster_visualizer()
    visualizer.append_clusters(clusters, data)
    visualizer.append_cluster(noise, data, marker='x')
    visualizer.show()


def cluster_simple_sample():
    template_clustering(SIMPLE_SAMPLES.SAMPLE_SIMPLE1, 8, 0)
    template_clustering(SIMPLE_SAMPLES.SAMPLE_SIMPLE2, 5, 0)
    template_clustering(SIMPLE_SAMPLES.SAMPLE_SIMPLE3, 5, 0)
    template_clustering(SIMPLE_SAMPLES.SAMPLE_SIMPLE4, 10, 0)
    template_clustering(SIMPLE_SAMPLES.SAMPLE_SIMPLE5, 5, 0)
    template_clustering(SIMPLE_SAMPLES.SAMPLE_SIMPLE6, 5, 0)
    template_clustering(SIMPLE_SAMPLES.SAMPLE_SIMPLE7, 5, 0)
    template_clustering(SIMPLE_SAMPLES.SAMPLE_SIMPLE8, 15, 0)
    template_clustering(SIMPLE_SAMPLES.SAMPLE_SIMPLE9, 7, 0)
    template_clustering(SIMPLE_SAMPLES.SAMPLE_SIMPLE10, 7, 0)
    template_clustering(SIMPLE_SAMPLES.SAMPLE_SIMPLE11, 5, 0)
    template_clustering(SIMPLE_SAMPLES.SAMPLE_SIMPLE12, 7, 0)
    template_clustering(SIMPLE_SAMPLES.SAMPLE_SIMPLE13, 2, 0)
    template_clustering(SIMPLE_SAMPLES.SAMPLE_ELONGATE, 7, 0)


def cluster_fcps():
    template_clustering(FCPS_SAMPLES.SAMPLE_LSUN, 15, 0)
    template_clustering(FCPS_SAMPLES.SAMPLE_TWO_DIAMONDS, 15, 0)
    template_clustering(FCPS_SAMPLES.SAMPLE_WING_NUT, 15, 0)
    template_clustering(FCPS_SAMPLES.SAMPLE_TARGET, 10, 0)
    template_clustering(FCPS_SAMPLES.SAMPLE_HEPTA, 9, 0)
    template_clustering(FCPS_SAMPLES.SAMPLE_CHAINLINK, 10, 0)
    template_clustering(FCPS_SAMPLES.SAMPLE_TETRA, 10, 0)
    template_clustering(FCPS_SAMPLES.SAMPLE_ATOM, 10, 0)


cluster_simple_sample()
cluster_fcps()