@@ -277,12 +277,12 @@ def predict_using_bc_with_0approx(
277
277
binary_metric_func : Union [Callable , List [Callable ]],
278
278
k : int ,
279
279
metric_aggregation : str = "mean" , # "mean" or "sum"
280
- maximize = True ,
280
+ maximize : bool = True ,
281
281
tolerance : float = 1e-6 ,
282
282
init_y_pred : Union [str , Matrix ] = "random" , # "random", "top", "greedy", Matrix
283
- max_iter : int = 100 ,
283
+ max_iters : int = 100 ,
284
284
shuffle_order : bool = True ,
285
- skip_tn = False ,
285
+ skip_tn : bool = False ,
286
286
return_meta : bool = False ,
287
287
seed : Optional [int ] = None ,
288
288
verbose : bool = False ,
@@ -313,7 +313,7 @@ def predict_using_bc_with_0approx(
313
313
maximize: Whether to maximize the metric.
314
314
tolerance: Defines the stopping condition, if the expected improvement of the metric is smaller than **tolerance** the algorithm stops.
315
315
init_y_pred: The initial prediction matrix. It can be either "random", "top", "greedy" or a matrix of shape (n, m).
316
- max_iter : The maximum number of iterations.
316
+ max_iters : The maximum number of iterations.
317
317
shuffle_order: Whether to shuffle the order of instances in each iteration.
318
318
skip_tn: Whether to skip the calculation of True Negatives in the confusion matrix, if the metric does not use the True Negatives, this can speed up the calculation, especially when using sparse matrices.
319
319
return_meta: Whether to return the meta information.
@@ -345,7 +345,13 @@ def my_binary_f1_score_on_conf_matrix(tp, fp, fn, tn):
345
345
"""
346
346
347
347
log_info (
348
- f"Starting optimization of ETU metric using block coordinate { 'ascent' if maximize else 'descent' } algorithm ..." ,
348
+ f"Starting optimization of ETU metric using block coordinate { 'ascent (maximization)' if maximize else 'descent (minimization)' } algorithm ..." ,
349
+ verbose ,
350
+ )
351
+ if k > 0 :
352
+ log_info (f" Budget k: { k } " , verbose )
353
+ log_info (
354
+ f" Tolerance (stopping condition): { tolerance } , max iterations: { max_iters } " ,
349
355
verbose ,
350
356
)
351
357
@@ -378,8 +384,8 @@ def my_binary_f1_score_on_conf_matrix(tp, fp, fn, tn):
378
384
# Initialize the instance order and set seed for shuffling
379
385
rng = np .random .default_rng (seed )
380
386
order = np .arange (n )
381
- for j in range (1 , max_iter + 1 ):
382
- log_info (f" Starting iteration { j } /{ max_iter } ..." , verbose )
387
+ for j in range (1 , max_iters + 1 ):
388
+ log_info (f" Starting iteration { j } /{ max_iters } ..." , verbose )
383
389
384
390
if shuffle_order :
385
391
rng .shuffle (order )
@@ -436,7 +442,7 @@ def my_binary_f1_score_on_conf_matrix(tp, fp, fn, tn):
436
442
meta ["utilities" ].append (new_utility )
437
443
438
444
log_info (
439
- f" Iteration { j } /{ max_iter } finished, expected metric value: { old_utility } -> { new_utility } " ,
445
+ f" Iteration { j } /{ max_iters } finished, expected metric value: { old_utility } -> { new_utility } " ,
440
446
verbose ,
441
447
)
442
448
if (
@@ -565,7 +571,7 @@ def predict_optimizing_coverage_using_bc(
565
571
init_y_pred : Union [
566
572
str , np .ndarray , csr_matrix
567
573
] = "random" , # "random", "topk", "random", or csr_matrix
568
- max_iter : int = 100 ,
574
+ max_iters : int = 100 ,
569
575
shuffle_order : bool = True ,
570
576
return_meta : bool = False ,
571
577
seed : Optional [int ] = None ,
@@ -614,8 +620,8 @@ def predict_optimizing_coverage_using_bc(
614
620
# Initialize the instance order and set seed for shuffling
615
621
rng = np .random .default_rng (seed )
616
622
order = np .arange (n )
617
- for j in range (1 , max_iter + 1 ):
618
- log_info (f" Starting iteration { j } /{ max_iter } ..." , verbose )
623
+ for j in range (1 , max_iters + 1 ):
624
+ log_info (f" Starting iteration { j } /{ max_iters } ..." , verbose )
619
625
620
626
if shuffle_order :
621
627
rng .shuffle (order )
@@ -642,7 +648,7 @@ def predict_optimizing_coverage_using_bc(
642
648
meta ["utilities" ].append (new_cov )
643
649
644
650
log_info (
645
- f" Iteration { j } /{ max_iter } finished, expected coverage: { old_cov } -> { new_cov } " ,
651
+ f" Iteration { j } /{ max_iters } finished, expected coverage: { old_cov } -> { new_cov } " ,
646
652
verbose ,
647
653
)
648
654
if new_cov <= old_cov + tolerance :
@@ -759,7 +765,7 @@ def predict_optimizing_instance_precision_using_bc(
759
765
k : int ,
760
766
tolerance : float = 1e-6 ,
761
767
init_y_pred : Union [str , np .ndarray , csr_matrix ] = "random" ,
762
- max_iter : int = 100 ,
768
+ max_iters : int = 100 ,
763
769
shuffle_order : bool = True ,
764
770
verbose : bool = False ,
765
771
return_meta : bool = False ,
@@ -779,7 +785,7 @@ def instance_precision_with_specific_k(tp, fp, fn, tn):
779
785
metric_aggregation = "sum" ,
780
786
tolerance = tolerance ,
781
787
init_y_pred = init_y_pred ,
782
- max_iter = max_iter ,
788
+ max_iters = max_iters ,
783
789
shuffle_order = shuffle_order ,
784
790
verbose = verbose ,
785
791
return_meta = return_meta ,
@@ -792,7 +798,7 @@ def predict_optimizing_mixed_instance_precision_and_macro_precision_using_bc(
792
798
alpha : float = 1 ,
793
799
tolerance : float = 1e-6 ,
794
800
init_y_pred : Union [str , np .ndarray , csr_matrix ] = "random" ,
795
- max_iter : int = 100 ,
801
+ max_iters : int = 100 ,
796
802
shuffle_order : bool = True ,
797
803
verbose : bool = False ,
798
804
return_meta : bool = False ,
@@ -817,7 +823,7 @@ def mixed_utility_fn(tp, fp, fn, tn):
817
823
skip_tn = True ,
818
824
tolerance = tolerance ,
819
825
init_y_pred = init_y_pred ,
820
- max_iter = max_iter ,
826
+ max_iters = max_iters ,
821
827
shuffle_order = shuffle_order ,
822
828
verbose = verbose ,
823
829
return_meta = return_meta ,
@@ -830,7 +836,7 @@ def predict_optimizing_mixed_instance_precision_and_macro_recall_using_bc(
830
836
alpha : float = 1 ,
831
837
tolerance : float = 1e-6 ,
832
838
init_y_pred : Union [str , np .ndarray , csr_matrix ] = "random" ,
833
- max_iter : int = 100 ,
839
+ max_iters : int = 100 ,
834
840
shuffle_order : bool = True ,
835
841
verbose : bool = False ,
836
842
return_meta : bool = False ,
@@ -855,7 +861,7 @@ def mixed_utility_fn(tp, fp, fn, tn):
855
861
skip_tn = True ,
856
862
tolerance = tolerance ,
857
863
init_y_pred = init_y_pred ,
858
- max_iter = max_iter ,
864
+ max_iters = max_iters ,
859
865
shuffle_order = shuffle_order ,
860
866
verbose = verbose ,
861
867
return_meta = return_meta ,
@@ -868,7 +874,7 @@ def predict_optimizing_mixed_instance_precision_and_macro_f1_score_using_bc(
868
874
alpha : float = 1 ,
869
875
tolerance : float = 1e-6 ,
870
876
init_y_pred : Union [str , np .ndarray , csr_matrix ] = "random" ,
871
- max_iter : int = 100 ,
877
+ max_iters : int = 100 ,
872
878
shuffle_order : bool = True ,
873
879
verbose : bool = False ,
874
880
return_meta : bool = False ,
@@ -893,7 +899,7 @@ def mixed_utility_fn(tp, fp, fn, tn):
893
899
skip_tn = True ,
894
900
tolerance = tolerance ,
895
901
init_y_pred = init_y_pred ,
896
- max_iter = max_iter ,
902
+ max_iters = max_iters ,
897
903
shuffle_order = shuffle_order ,
898
904
verbose = verbose ,
899
905
return_meta = return_meta ,
0 commit comments