File: test_656_k_means.py

package info (click to toggle)
ezdxf 1.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 104,528 kB
  • sloc: python: 182,341; makefile: 116; lisp: 20; ansic: 4
file content (29 lines) | stat: -rw-r--r-- 805 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
#  Copyright (c) 2022, Manfred Moitzi
#  License: MIT License

import pytest
from ezdxf.math import Vec3
from ezdxf.math.clustering import k_means, average_cluster_radius, average_intra_cluster_distance

POINTS = [Vec3.random(100) for _ in range(100)]


@pytest.mark.parametrize("k", [4, 5, 6])
def test_cluster_random_points(k):
    clusters = k_means(POINTS, k, max_iter=5)
    assert len(clusters) == k
    assert sum(map(len, clusters)) == 100


def test_measure_average_cluster_radius():
    clusters = k_means(POINTS, 5, max_iter=5)
    assert average_cluster_radius(clusters) > 10.0


def test_measure_average_intra_cluster_distance():
    clusters = k_means(POINTS, 5, max_iter=5)
    assert average_intra_cluster_distance(clusters) > 10.0


if __name__ == "__main__":
    pytest.main([__file__])