def test_DTWKmeans_inertia_decrease_with_iteration_increase(self): list_of_series = make_flat_dataset([-1.0,0,0.5],10,additive_noise_factor=0.3,level_noise_factor=0.3,lengths=[5]) num_clusters = 3 random_seed = 101 clts_1 = DTWKmeans(num_clust = num_clusters, num_iter=1, random_seed=random_seed) clts_1.fit(list_of_series) clts_2 = DTWKmeans(num_clust = num_clusters, num_iter=2, random_seed=random_seed) clts_2.fit(list_of_series) print (clts_1._inertia(list_of_series)) print (clts_2._inertia(list_of_series)) #assert False assert clts_1._inertia(list_of_series) >= clts_2._inertia(list_of_series)
def test_DTWKmeans_single_num_init(self,num_init,expected_inertia): list_of_series = flat_dataset(random_seed=101) # running only 2 times even if list of random seeds is 10 random_seed = 22 clts = DTWKmeans(num_clust = 3, num_iter = 10, num_init = num_init, w=1,euclidean=True,random_seed=random_seed) clts.fit(list_of_series) inertia=clts._inertia(list_of_series) assert inertia == pytest.approx(expected_inertia,abs=1e-2)
def test_DTWKmeans_inertia_positive(self): list_of_series = make_flat_dataset([-1.0,0,0.5],10,additive_noise_factor=0.3,level_noise_factor=0.3,lengths=[5]) num_clusters = 3 iterations = 1 random_seed = 101 clts_1 = DTWKmeans(num_clust = num_clusters, num_iter = iterations, random_seed=random_seed) clts_1.fit(list_of_series) intertia = clts_1._inertia(list_of_series) assert intertia > 0