@@ -264,24 +264,55 @@ def test_f1_micro_1d_list():
264
264
assert 0.5 == f1 (y_true , y_pred , "micro" )
265
265
266
266
267
+ def test_f1_micro_1d_list_zero_division ():
268
+ y_true = [1 , 2 , 3 , 4 ]
269
+ y_pred = [5 , 6 , 7 , 8 ]
270
+ assert 0.0 == f1 (y_true , y_pred , "micro" )
271
+ assert 1.0 == f1 (y_true , y_pred , "micro" , 1.0 )
272
+ assert np .isnan (f1 (y_true , y_pred , "micro" , np .nan ))
273
+
274
+
267
275
def test_f1_micro_2d_list ():
268
276
y_true = [[1 , 2 , 3 , 4 ], [1 , 2 , 5 , 6 ]]
269
277
y_pred = [[1 , 2 , 5 , 6 ], [1 , 2 , 3 , 4 ]]
270
278
assert 0.5 == f1 (y_true , y_pred , "micro" )
271
279
272
280
281
+ def test_f1_micro_2d_list_zero_division ():
282
+ y_true = [[1 , 2 , 3 , 4 ], [5 , 6 , 7 , 8 ]]
283
+ y_pred = [[5 , 6 , 7 , 8 ], [1 , 2 , 3 , 4 ]]
284
+ assert 0.0 == f1 (y_true , y_pred , "micro" )
285
+ assert 1.0 == f1 (y_true , y_pred , "micro" , 1.0 )
286
+
287
+
273
288
def test_f1_micro_1d_np_array ():
274
289
y_true = np .array ([1 , 2 , 3 , 4 ])
275
290
y_pred = np .array ([1 , 2 , 5 , 6 ])
276
291
assert 0.5 == f1 (y_true , y_pred , "micro" )
277
292
278
293
294
+ def test_f1_micro_1d_np_array_zero_division ():
295
+ y_true = np .array ([1 , 2 , 3 , 4 ])
296
+ y_pred = np .array ([5 , 6 , 7 , 8 ])
297
+ assert 0.0 == f1 (y_true , y_pred , "micro" )
298
+ assert 1.0 == f1 (y_true , y_pred , "micro" , 1.0 )
299
+ assert np .isnan (f1 (y_true , y_pred , "micro" , np .nan ))
300
+
301
+
279
302
def test_f1_micro_2d_np_array ():
280
303
y_true = np .array ([[1 , 2 , 3 , 4 ], [1 , 2 , 5 , 6 ]])
281
304
y_pred = np .array ([[1 , 2 , 5 , 6 ], [1 , 2 , 3 , 4 ]])
282
305
assert 0.5 == f1 (y_true , y_pred , "micro" )
283
306
284
307
308
+ def test_f1_micro_2d_np_array_zero_division ():
309
+ y_true = np .array ([[1 , 2 , 3 , 4 ], [5 , 6 , 7 , 8 ]])
310
+ y_pred = np .array ([[5 , 6 , 7 , 8 ], [1 , 2 , 3 , 4 ]])
311
+ assert 0.0 == f1 (y_true , y_pred , "micro" )
312
+ assert 1.0 == f1 (y_true , y_pred , "micro" , 1.0 )
313
+ assert np .isnan (f1 (y_true , y_pred , "micro" , np .nan ))
314
+
315
+
285
316
def test_f1_micro_3d_np_array ():
286
317
y_true = np .array (
287
318
[
@@ -299,30 +330,80 @@ def test_f1_micro_3d_np_array():
299
330
assert 1 == f1 (y_true , y_true , "micro" )
300
331
301
332
333
+ def test_f1_micro_3d_np_array_zero_division ():
334
+ y_true = np .array (
335
+ [
336
+ [["a" , "b" ], ["c" , "d" ]],
337
+ [["e" , "f" ], ["g" , "h" ]],
338
+ ]
339
+ )
340
+ y_pred = np .array (
341
+ [
342
+ [["i" , "j" ], ["k" , "l" ]],
343
+ [["m" , "n" ], ["o" , "p" ]],
344
+ ]
345
+ )
346
+ assert 0.0 == f1 (y_true , y_pred , "micro" )
347
+ assert 1.0 == f1 (y_true , y_pred , "micro" , 1.0 )
348
+ assert np .isnan (f1 (y_true , y_pred , "micro" , np .nan ))
349
+
350
+
302
351
def test_f1_macro_1d_list ():
303
352
y_true = [1 , 2 , 3 , 4 ]
304
353
y_pred = [1 , 2 , 3 , 4 ]
305
354
assert 1 == f1 (y_true , y_pred , "macro" )
306
355
307
356
357
+ def test_f1_macro_1d_list_zero_division ():
358
+ y_true = [1 , 2 , 3 , 4 ]
359
+ y_pred = [5 , 6 , 7 , 8 ]
360
+ assert 0.0 == f1 (y_true , y_pred , "macro" )
361
+ assert 1.0 == f1 (y_true , y_pred , "macro" , 1.0 )
362
+ assert np .isnan (f1 (y_true , y_pred , "macro" , np .nan ))
363
+
364
+
308
365
def test_f1_macro_2d_list ():
309
366
y_true = [[1 , 2 , 3 , 4 ], [1 , 2 , 5 , 6 ]]
310
367
y_pred = [[1 , 5 , 6 ], [1 , 2 , 3 ]]
311
368
assert 0.4285714 == approx (f1 (y_true , y_pred , "macro" ))
312
369
313
370
371
+ def test_f1_macro_2d_list_zero_division ():
372
+ y_true = [[1 , 2 , 3 , 4 ], [5 , 6 , 7 , 8 ]]
373
+ y_pred = [[5 , 6 , 7 , 8 ], [1 , 2 , 3 , 4 ]]
374
+ assert 0.0 == f1 (y_true , y_pred , "macro" )
375
+ assert 1.0 == f1 (y_true , y_pred , "macro" , 1.0 )
376
+ assert np .isnan (f1 (y_true , y_pred , "macro" , np .nan ))
377
+
378
+
314
379
def test_f1_macro_1d_np_array ():
315
380
y_true = np .array ([1 , 2 , 3 , 4 ])
316
381
y_pred = np .array ([1 , 2 , 3 , 4 ])
317
382
assert 1 == f1 (y_true , y_pred , "macro" )
318
383
319
384
385
+ def test_f1_macro_1d_np_array_zero_division ():
386
+ y_true = np .array ([1 , 2 , 3 , 4 ])
387
+ y_pred = np .array ([5 , 6 , 7 , 8 ])
388
+ assert 0.0 == f1 (y_true , y_pred , "macro" )
389
+ assert 1.0 == f1 (y_true , y_pred , "macro" , 1.0 )
390
+ assert np .isnan (f1 (y_true , y_pred , "macro" , np .nan ))
391
+
392
+
320
393
def test_f1_macro_2d_np_array ():
321
394
y_true = np .array ([[1 , 2 , 3 , 4 ], [1 , 2 , 5 , 6 ]])
322
395
y_pred = np .array ([[1 , 5 , 6 ], [1 , 2 , 3 ]])
323
396
assert 0.4285714 == approx (f1 (y_true , y_pred , "macro" ))
324
397
325
398
399
+ def test_f1_macro_2d_np_array_zero_division ():
400
+ y_true = np .array ([[1 , 2 , 3 , 4 ], [5 , 6 , 7 , 8 ]])
401
+ y_pred = np .array ([[5 , 6 , 7 , 8 ], [1 , 2 , 3 , 4 ]])
402
+ assert 0.0 == f1 (y_true , y_pred , "macro" )
403
+ assert 1.0 == f1 (y_true , y_pred , "macro" , 1.0 )
404
+ assert np .isnan (f1 (y_true , y_pred , "macro" , np .nan ))
405
+
406
+
326
407
def test_f1_macro_3d_np_array ():
327
408
y_true = np .array (
328
409
[
@@ -340,6 +421,24 @@ def test_f1_macro_3d_np_array():
340
421
assert 1 == f1 (y_true , y_true , "macro" )
341
422
342
423
424
+ def test_f1_macro_3d_np_array_zero_division ():
425
+ y_true = np .array (
426
+ [
427
+ [["a" , "b" ], ["c" , "d" ]],
428
+ [["e" , "f" ], ["g" , "h" ]],
429
+ ]
430
+ )
431
+ y_pred = np .array (
432
+ [
433
+ [["i" , "j" ], ["k" , "l" ]],
434
+ [["m" , "n" ], ["o" , "p" ]],
435
+ ]
436
+ )
437
+ assert 0.0 == f1 (y_true , y_pred , "macro" )
438
+ assert 1.0 == f1 (y_true , y_pred , "macro" , 1.0 )
439
+ assert np .isnan (f1 (y_true , y_pred , "macro" , np .nan ))
440
+
441
+
343
442
def test_empty_levels_2d_list_1 ():
344
443
y_true = [["2" , "3" ], ["1" ], ["4" , "5" , "6" ]]
345
444
y_pred = [["1" ], ["2" , "3" ], ["4" , "5" , "6" ]]
0 commit comments