"""This file contains tests for the `shap.datasets` module.""" import pytest import shap @pytest.mark.parametrize("n_points", [None, 12]) def test_imagenet50(n_points): # test that fetch/download works fine X, y = shap.datasets.imagenet50(n_points=n_points) # check the shape of the result # check that the n_points parameter samples the dataset n_points = 50 if n_points is None else n_points assert X.shape == (n_points, 224, 224, 3) assert y.shape == (n_points,) @pytest.mark.parametrize("n_points", [None, 12]) def test_california(n_points): # test that fetch/download works fine X, y = shap.datasets.california(n_points=n_points) # check the shape of the result # check that the n_points parameter samples the dataset n_points = 20_640 if n_points is None else n_points assert X.shape == (n_points, 8) assert y.shape == (n_points,) @pytest.mark.parametrize("n_points", [None, 12]) def test_linnerud(n_points): # test that fetch/download works fine X, y = shap.datasets.linnerud(n_points=n_points) # check the shape of the result # check that the n_points parameter samples the dataset n_points = 20 if n_points is None else n_points assert X.shape == (n_points, 3) assert y.shape == (n_points, 3) @pytest.mark.parametrize("n_points", [None, 12]) def test_imdb(n_points): # test that fetch/download works fine X, y = shap.datasets.imdb(n_points=n_points) # check the shape of the result # check that the n_points parameter samples the dataset n_points = 25_000 if n_points is None else n_points assert len(X) == n_points assert len(y) == n_points @pytest.mark.parametrize("n_points", [None, 12]) def test_diabetes(n_points): # test that fetch/download works fine X, y = shap.datasets.diabetes(n_points=n_points) # check the shape of the result # check that the n_points parameter samples the dataset n_points = 442 if n_points is None else n_points assert X.shape == (n_points, 10) assert y.shape == (n_points,) @pytest.mark.parametrize("n_points", [None, 12]) def test_iris(n_points): # test that fetch/download works fine X, y = shap.datasets.iris(n_points=n_points) # check the shape of the result # check that the n_points parameter samples the dataset n_points = 150 if n_points is None else n_points assert X.shape == (n_points, 4) assert y.shape == (n_points,) @pytest.mark.parametrize("n_points", [None, 12]) def test_adult(n_points): # test that fetch/download works fine X, y = shap.datasets.adult(n_points=n_points) # check the shape of the result # check that the n_points parameter samples the dataset n_points = 32_561 if n_points is None else n_points assert X.shape == (n_points, 12) assert y.shape == (n_points,) @pytest.mark.parametrize("n_points", [None, 12]) def test_nhanesi(n_points): # test that fetch/download works fine X, y = shap.datasets.nhanesi(n_points=n_points) # check the shape of the result # check that the n_points parameter samples the dataset n_points = 14_264 if n_points is None else n_points assert X.shape == (n_points, 79) assert y.shape == (n_points,) @pytest.mark.parametrize("n_points", [100, 2_000]) def test_corrgroups60(n_points): # test that fetch/download works fine X, y = shap.datasets.corrgroups60(n_points=n_points) # check the shape of the result # check that the n_points parameter samples the dataset assert X.shape == (n_points, 60) assert y.shape == (n_points,) @pytest.mark.parametrize("n_points", [100, 2_000]) def test_independentlinear60(n_points): # test that fetch/download works fine X, y = shap.datasets.independentlinear60(n_points=n_points) # check the shape of the result # check that the n_points parameter samples the dataset assert X.shape == (n_points, 60) assert y.shape == (n_points,) @pytest.mark.parametrize("n_points", [None, 12]) def test_a1a(n_points): # test that fetch/download works fine X, y = shap.datasets.a1a(n_points=n_points) # check the shape of the result # check that the n_points parameter samples the dataset n_points = 1_605 if n_points is None else n_points assert X.shape == (n_points, 119) assert y.shape == (n_points,) def test_rank(): # test that fetch/download works fine X1, y1, X2, y2, q1, q2 = shap.datasets.rank() # check the shape of the result assert X1.shape == (3_005, 300) assert y1.shape == (3_005,) assert X2.shape == (768, 300) assert y2.shape == (768,) assert q1.shape == (201,) assert q2.shape == (50,)