@@ -486,24 +486,43 @@ end
486
486
end
487
487
488
488
@testset_accelerated " class weights in evaluation" accel begin
489
- x = [1 ,2 ,3 ,4 ,5 ,6 ,7 ]
490
- X, y = Tables. table ([x x x x x x]), coerce ([1 ,2 ,1 ,3 ,1 ,2 ,2 ], Multiclass)
491
- model = Models. DeterministicConstantClassifier ()
492
- mach = machine (model, X, y)
489
+ X, y = make_blobs (rng= rng)
493
490
cv= CV (nfolds = 2 )
491
+ fold1, fold2 = partition (eachindex (y), 0.5 )
492
+ m = MLJBase. MulticlassFScore ()
494
493
class_w = Dict (1 => 1 , 2 => 2 , 3 => 3 )
495
- e = evaluate! (mach,
496
- resampling= cv,
497
- measure= MLJBase. MulticlassFScore (return_type= Vector),
498
- class_weights= class_w,
499
- verbosity= verb,
500
- acceleration= accel). measurement[1 ]
501
- @test round (e, digits= 3 ) ≈ 0.217
494
+
495
+ model = Models. DeterministicConstantClassifier ()
496
+ mach = machine (model, X, y)
497
+
498
+ # fscore by hand:
499
+ fit! (mach, rows= fold1, verbosity= 0 )
500
+ score1 = m (predict (mach, rows= fold2), y[fold2], class_w)
501
+ fit! (mach, rows= fold2, verbosity= 0 )
502
+ score2 = m (predict (mach, rows= fold1), y[fold1], class_w)
503
+ score_by_hand = mean ([score1, score2])
504
+
505
+ # fscore by evaluate!:
506
+ score = evaluate! (
507
+ mach,
508
+ resampling= cv,
509
+ measure= m,
510
+ class_weights= class_w,
511
+ verbosity= verb,
512
+ acceleration= accel,
513
+ ). measurement[1 ]
514
+
515
+ @test score ≈ score_by_hand
502
516
503
517
# if class weights in `evaluate!` isn't specified:
504
- e = evaluate! (mach, resampling= cv, measure= multiclass_f1score,
505
- verbosity= verb, acceleration= accel). measurement[1 ]
506
- @test e ≈ 0.15
518
+ plain_score = evaluate! (
519
+ mach,
520
+ resampling= cv,
521
+ measure= m,
522
+ verbosity= verb,
523
+ acceleration= accel,
524
+ ). measurement[1 ]
525
+ @test ! (score ≈ plain_score)
507
526
end
508
527
509
528
@testset_accelerated " resampler as machine" accel begin
794
813
795
814
# end
796
815
true
797
-
0 commit comments