|
1 | | -module TestYingYang |
| 1 | +module TestYinyang |
2 | 2 |
|
3 | 3 | using ParallelKMeans |
4 | 4 | using Test |
5 | 5 | using Random |
6 | 6 |
|
7 | | -@testset "basic kmeans yingyang" begin |
| 7 | +@testset "basic kmeans Yinyang" begin |
8 | 8 | X = [1. 2. 4.;] |
9 | | - res = kmeans(YingYang(false), X, 1; n_threads = 1, tol = 1e-6, verbose = false) |
| 9 | + res = kmeans(Yinyang(false), X, 1; n_threads = 1, tol = 1e-6, verbose = false) |
10 | 10 | @test res.assignments == [1, 1, 1] |
11 | 11 | @test res.centers[1] ≈ 2.3333333333333335 |
12 | 12 | @test res.totalcost ≈ 4.666666666666666 |
13 | 13 | @test res.converged |
14 | 14 |
|
15 | | - res = kmeans(YingYang(false), X, 2; n_threads = 1, init = [1.0 4.0], tol = 1e-6, verbose = false) |
| 15 | + res = kmeans(Yinyang(false), X, 2; n_threads = 1, init = [1.0 4.0], tol = 1e-6, verbose = false) |
16 | 16 | @test res.assignments == [1, 1, 2] |
17 | 17 | @test res.centers ≈ [1.5 4.0] |
18 | 18 | @test res.totalcost ≈ 0.5 |
19 | 19 | @test res.converged |
20 | 20 | end |
21 | 21 |
|
22 | | -@testset "yingyang no convergence yield last result" begin |
| 22 | +@testset "Yinyang no convergence yield last result" begin |
23 | 23 | X = [1. 2. 4.;] |
24 | | - res = kmeans(YingYang(false), X, 2; n_threads = 1, init = [1.0 4.0], tol = 1e-6, max_iters = 1, verbose = false) |
| 24 | + res = kmeans(Yinyang(false), X, 2; n_threads = 1, init = [1.0 4.0], tol = 1e-6, max_iters = 1, verbose = false) |
25 | 25 | @test !res.converged |
26 | 26 | @test res.totalcost ≈ 0.5 |
27 | 27 | end |
28 | 28 |
|
29 | | -@testset "yingyang singlethread linear separation" begin |
| 29 | +@testset "Yinyang singlethread linear separation" begin |
30 | 30 | Random.seed!(2020) |
31 | 31 |
|
32 | 32 | X = rand(3, 100) |
33 | | - res = kmeans(YingYang(false), X, 3; n_threads = 1, tol = 1e-10, max_iters = 10, verbose = false) |
| 33 | + res = kmeans(Yinyang(false), X, 3; n_threads = 1, tol = 1e-10, max_iters = 10, verbose = false) |
34 | 34 |
|
35 | 35 | @test res.totalcost ≈ 14.16198704459199 |
36 | 36 | @test !res.converged |
37 | 37 | @test res.iterations == 10 |
38 | 38 | end |
39 | 39 |
|
40 | | -@testset "yingyang multithread linear separation quasi two threads" begin |
| 40 | +@testset "Yinyang multithread linear separation quasi two threads" begin |
41 | 41 | Random.seed!(2020) |
42 | 42 |
|
43 | 43 | X = rand(3, 100) |
44 | | - res = kmeans(YingYang(false), X, 3; n_threads = 2, tol = 1e-6, verbose = false) |
| 44 | + res = kmeans(Yinyang(false), X, 3; n_threads = 2, tol = 1e-6, verbose = false) |
45 | 45 |
|
46 | 46 | @test res.totalcost ≈ 14.16198704459199 |
47 | 47 | @test res.converged |
48 | 48 | end |
49 | 49 |
|
50 | | -@testset "yingyang different modes" begin |
| 50 | +@testset "Yinyang different modes" begin |
51 | 51 | Random.seed!(2020) |
52 | 52 | X = rand(3, 100) |
53 | 53 | init = ParallelKMeans.smart_init(X, 20).centroids |
54 | 54 | baseline = kmeans(Lloyd(), X, 20, init = init, tol = 1e-10, n_threads = 1, verbose = false, max_iters = 1000) |
55 | 55 |
|
56 | | - res = kmeans(YingYang(false), X, 20, init = init, tol = 1e-10, n_threads = 1, verbose = false, max_iters = 1000) |
| 56 | + res = kmeans(Yinyang(false), X, 20, init = init, tol = 1e-10, n_threads = 1, verbose = false, max_iters = 1000) |
57 | 57 | @test res.converged |
58 | 58 | @test res.totalcost ≈ baseline.totalcost |
59 | 59 | @test res.assignments == baseline.assignments |
60 | 60 | @test res.centers ≈ baseline.centers |
61 | 61 | @test res.iterations == baseline.iterations |
62 | 62 |
|
63 | | - res = kmeans(YingYang(), X, 20, init = init, tol = 1e-10, n_threads = 1, verbose = false, max_iters = 1000) |
| 63 | + res = kmeans(Yinyang(), X, 20, init = init, tol = 1e-10, n_threads = 1, verbose = false, max_iters = 1000) |
64 | 64 | @test res.converged |
65 | 65 | @test res.totalcost ≈ baseline.totalcost |
66 | 66 | @test res.assignments == baseline.assignments |
67 | 67 | @test res.centers ≈ baseline.centers |
68 | 68 | @test res.iterations == baseline.iterations |
69 | 69 |
|
70 | | - res = kmeans(YingYang(10), X, 20, init = init, tol = 1e-10, n_threads = 1, verbose = false, max_iters = 1000) |
| 70 | + res = kmeans(Yinyang(10), X, 20, init = init, tol = 1e-10, n_threads = 1, verbose = false, max_iters = 1000) |
71 | 71 | @test res.converged |
72 | 72 | @test res.totalcost ≈ baseline.totalcost |
73 | 73 | @test res.assignments == baseline.assignments |
74 | 74 | @test res.centers ≈ baseline.centers |
75 | 75 | @test res.iterations == baseline.iterations |
76 | 76 |
|
77 | | - res = kmeans(YingYang(7), X, 20, init = init, tol = 1e-10, n_threads = 1, verbose = false, max_iters = 1000) |
| 77 | + res = kmeans(Yinyang(7), X, 20, init = init, tol = 1e-10, n_threads = 1, verbose = false, max_iters = 1000) |
78 | 78 | @test res.converged |
79 | 79 | @test res.totalcost ≈ baseline.totalcost |
80 | 80 | @test res.assignments == baseline.assignments |
81 | 81 | @test res.centers ≈ baseline.centers |
82 | 82 | @test res.iterations == baseline.iterations |
83 | 83 |
|
84 | | - res = kmeans(YingYang(false), X, 20, init = init, tol = 1e-10, n_threads = 2, verbose = false, max_iters = 1000) |
| 84 | + res = kmeans(Yinyang(false), X, 20, init = init, tol = 1e-10, n_threads = 2, verbose = false, max_iters = 1000) |
85 | 85 | @test res.converged |
86 | 86 | @test res.totalcost ≈ baseline.totalcost |
87 | 87 | @test res.assignments == baseline.assignments |
88 | 88 | @test res.centers ≈ baseline.centers |
89 | 89 | @test res.iterations == baseline.iterations |
90 | 90 |
|
91 | | - res = kmeans(YingYang(), X, 20, init = init, tol = 1e-10, n_threads = 2, verbose = false, max_iters = 1000) |
| 91 | + res = kmeans(Yinyang(), X, 20, init = init, tol = 1e-10, n_threads = 2, verbose = false, max_iters = 1000) |
92 | 92 | @test res.converged |
93 | 93 | @test res.totalcost ≈ baseline.totalcost |
94 | 94 | @test res.assignments == baseline.assignments |
95 | 95 | @test res.centers ≈ baseline.centers |
96 | 96 | @test res.iterations == baseline.iterations |
97 | 97 |
|
98 | | - res = kmeans(YingYang(10), X, 20, init = init, tol = 1e-10, n_threads = 2, verbose = false, max_iters = 1000) |
| 98 | + res = kmeans(Yinyang(10), X, 20, init = init, tol = 1e-10, n_threads = 2, verbose = false, max_iters = 1000) |
99 | 99 | @test res.converged |
100 | 100 | @test res.totalcost ≈ baseline.totalcost |
101 | 101 | @test res.assignments == baseline.assignments |
102 | 102 | @test res.centers ≈ baseline.centers |
103 | 103 | @test res.iterations == baseline.iterations |
104 | 104 |
|
105 | | - res = kmeans(YingYang(7), X, 20, init = init, tol = 1e-10, n_threads = 2, verbose = false, max_iters = 1000) |
| 105 | + res = kmeans(Yinyang(7), X, 20, init = init, tol = 1e-10, n_threads = 2, verbose = false, max_iters = 1000) |
106 | 106 | @test res.converged |
107 | 107 | @test res.totalcost ≈ baseline.totalcost |
108 | 108 | @test res.assignments == baseline.assignments |
|
0 commit comments