yellowbrick icon indicating copy to clipboard operation
yellowbrick copied to clipboard

yellowbrick is incompatible with sklearn v1.7.0

Open jakevdp opened this issue 5 months ago • 1 comments

$ pip list | grep scikit-learn
scikit-learn                          1.7.0

$ git clone https://github.com/DistrictDataLabs/yellowbrick.git
Cloning into 'yellowbrick'...
remote: Enumerating objects: 10868, done.
remote: Counting objects: 100% (292/292), done.
remote: Compressing objects: 100% (144/144), done.
remote: Total 10868 (delta 223), reused 149 (delta 148), pack-reused 10576 (from 3)
Receiving objects: 100% (10868/10868), 78.95 MiB | 13.57 MiB/s, done.
Resolving deltas: 100% (6621/6621), done.

$ cd yellowbrick && pytest . -k test_wrapper --tb=short
============================= test session starts ==============================
platform linux -- Python 3.11.13, pytest-8.4.0, pluggy-1.6.0
rootdir: /content
plugins: flakes-4.0.5, langsmith-0.3.44, typeguard-4.4.2, anyio-4.9.0
collected 1158 items / 1139 deselected / 19 selected                           

yellowbrick/tests/test_contrib/test_wrapper.py ....FF.F...ss             [ 68%]
yellowbrick/tests/test_utils/test_wrapper.py ......                      [100%]

=================================== FAILURES ===================================
_________________ TestContribWrapper.test_wraps_is_classifier __________________
yellowbrick/yellowbrick/contrib/wrapper.py:129: in __getattr__
    return getattr(self.estimator, attr)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   AttributeError: 'ThirdPartyEstimator' object has no attribute '__sklearn_tags__'

During handling of the above exception, another exception occurred:
yellowbrick/tests/test_contrib/test_wrapper.py:116: in test_wraps_is_classifier
    assert sk_is_classifier(tpe)
           ^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.11/dist-packages/sklearn/base.py:1211: in is_classifier
    return get_tags(estimator).estimator_type == "classifier"
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.11/dist-packages/sklearn/utils/_tags.py:325: in get_tags
    tags = estimator.__sklearn_tags__()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
yellowbrick/yellowbrick/contrib/wrapper.py:131: in __getattr__
    raise YellowbrickAttributeError((
E   yellowbrick.exceptions.YellowbrickAttributeError: estimator is missing the '__sklearn_tags__' attribute, which is required for this visualizer - please see the third party estimators documentation.
__________________ TestContribWrapper.test_wraps_is_regressor __________________
yellowbrick/yellowbrick/contrib/wrapper.py:129: in __getattr__
    return getattr(self.estimator, attr)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   AttributeError: 'ThirdPartyEstimator' object has no attribute '__sklearn_tags__'

During handling of the above exception, another exception occurred:
yellowbrick/tests/test_contrib/test_wrapper.py:124: in test_wraps_is_regressor
    assert sk_is_regressor(tpe)
           ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.11/dist-packages/sklearn/base.py:1251: in is_regressor
    return get_tags(estimator).estimator_type == "regressor"
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.11/dist-packages/sklearn/utils/_tags.py:325: in get_tags
    tags = estimator.__sklearn_tags__()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
yellowbrick/yellowbrick/contrib/wrapper.py:131: in __getattr__
    raise YellowbrickAttributeError((
E   yellowbrick.exceptions.YellowbrickAttributeError: estimator is missing the '__sklearn_tags__' attribute, which is required for this visualizer - please see the third party estimators documentation.
______________ TestContribWrapper.test_wraps_is_outlier_detector _______________
yellowbrick/yellowbrick/contrib/wrapper.py:129: in __getattr__
    return getattr(self.estimator, attr)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   AttributeError: 'ThirdPartyEstimator' object has no attribute '__sklearn_tags__'

During handling of the above exception, another exception occurred:
yellowbrick/tests/test_contrib/test_wrapper.py:138: in test_wraps_is_outlier_detector
    assert sk_is_outlier_detector(tpe)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.11/dist-packages/sklearn/base.py:1318: in is_outlier_detector
    return get_tags(estimator).estimator_type == "outlier_detector"
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.11/dist-packages/sklearn/utils/_tags.py:325: in get_tags
    tags = estimator.__sklearn_tags__()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
yellowbrick/yellowbrick/contrib/wrapper.py:131: in __getattr__
    raise YellowbrickAttributeError((
E   yellowbrick.exceptions.YellowbrickAttributeError: estimator is missing the '__sklearn_tags__' attribute, which is required for this visualizer - please see the third party estimators documentation.
=========================== short test summary info ============================
FAILED yellowbrick/tests/test_contrib/test_wrapper.py::Third party ContribEstimator wrapper::Assert a wrapped estimator passes is_classifier check - yellowbrick.exceptions.YellowbrickAttributeError: estimator is missing the ...
FAILED yellowbrick/tests/test_contrib/test_wrapper.py::Third party ContribEstimator wrapper::Assert a wrapped estimator passes is_regressor check - yellowbrick.exceptions.YellowbrickAttributeError: estimator is missing the ...
FAILED yellowbrick/tests/test_contrib/test_wrapper.py::Third party ContribEstimator wrapper::Assert a wrapped estimator passes is_outlier_detector check - yellowbrick.exceptions.YellowbrickAttributeError: estimator is missing the ...
=========== 3 failed, 14 passed, 2 skipped, 1139 deselected in 9.46s ===========

jakevdp avatar Jun 10 '25 17:06 jakevdp