Releases: DistrictDataLabs/yellowbrick
Version 1.5
Deployed: Sunday, August 21, 2022
Current Contributors: @stefmolin, @pdamodaran, @SangamSwadiK, @davidgilbertson, @lwgray, @bbengfort, @admo1, @charlesincharge, @uricod, @pdeziel, @rebeccabilbro
Major:
- Added
WordCorrelationPlot
Visualizer - Built tests for using sklearn pipeline with visualizers
- Allowed Marker Style to be specified in Validation Curve Visualizer
- Fixed
get_params
for estimator wrapper to preventAttributeError
- Updated missing values visualizer to handle multiple data types and work on both numpy arrays and pandas data frames.
- Added pairwise distance metrics to scoring metrics in KElbowVisualizer
Minor
- Pegged Numba to v0.55.2
- Updated Umap to v0.5.3
- Fixed Missing labels in classification report visualizer
- Updated Numpy to v1.22.0
Documentation
- The Spanish language Yellowbrick docs are now live: https://www.scikit-yb.org/es/latest/
- Added Dropping curve documentation
- Added new example Notebook for Regression Visualizers
- Fixed Typo in PR section of getting started docs
- Fixed Typo in rank docs
- Updated docstring in kneed.py utility file
- Clarified how to run
make html
in PR template
Infrastructure
- Added ability to run linting Actions on PRs
- Implemented black code formatting as pre-commit hook
Version 1.4
Deployed: Saturday, February 19, 2022
Current Contributors: @lwgray, @bbengfort, @falcaopetri, @pkaf, @akx, @pdamodaran, @emarkou, @ndanielsen, @rebeccabilbro, @pdeziel, @busFred, @charlesincharge, @wagner2010
Major:
- Upgrade dependencies to support sklearn v1.0, Numpy 1.20+, Scipy 1.6, nltk 3.6.7, and Matplotlib 3.4.1
- Implement new
set_params
andget_params
on ModelVisualizers to ensure wrapped estimator is being correctly accessed via the newEstimator
methods. - Fix the test dependencies to prevent variability in CI (must periodically review dependencies to ensure we're testing what our users are experiencing).
- Change
model
param toestimator
param to ensure that Visualizer arguments match their property names so that inspect works with get and set params and other scikit-learn utility functions.
Minor
- Improved argmax handling in
DiscriminationThreshold
Visualizer - Improved error handling in
FeatureImportances
Visualizer - Gave option to remove colorer from
ClassificationReport
Visualizer - Allowed for more flexible
KElbow
colors that use default palette by default - Import scikit-learn private API _safe_indexing without error.
- Remove any calls to
set_params
in Visualizer__init__
methods. - Modify test fixtures and baseline images to accommodate new sklearn implementation
- Temporarily set the numpy dependency to be less than 1.20 because this is causing Pickle issues with joblib and umap
- Add
shuffle=True
argument to any CV class that uses a random seed. - Set our CI matrix to Python and Miniconda 3.7 and 3.8
Bugs
- Fixed score label display in
PredictionError
Visualizer - Fixed axes limit in
PredictionError
Visualizer - Fixed
KElbowVisualizer
to handle null cluster encounters - Fixed broken url to pytest fixtures
- Fixed
random_state
to be in sync withPCA
transformer - Fixed the inability to place
FeatureCorrelations
into subplots - Fixed hanging printing impacting model visualizers
- Fixed error handling when decision function models encounter binary data
- Fixed missing code in README.md
Infrastructure/Housekeeping/documentation
- Updated status badges for build result and code coverage
- Removed deprecated pytest-runner from testing
- Replaced Travis with Github Actions
- Changed our master branch to the main branch
- Created a release issue template
- Updated our CI to test Python 3.8 and 3.9
- Managed test warnings
- Adds .gitattributes to fix handle white space changes
- Updated to use
add_css_file
for documentation because of deprecation ofadd_stylesheet
- Added a Sphinx build to GitHub Actions for ensuring that the docs build correctly
- Switched to a YB-specific data lake for datasets storage
Version 1.3.post1
Deployed: Saturday, February 13, 2021
Current Contributors: @rebeccabilbro, @bbengfort, @Viveckh
Fixes hanging print impacting ModelVisualizers.
Version 1.3
Deployed: Tuesday, February 9, 2021
Current Contributors: @bbengfort, @rebeccabilbro, @Paulj1989, @phbillet, @pdamodaran, @pdeziel
This version primarily repairs the dependency issues we faced with scipy 1.6, scikit-learn 0.24 and Python 3.6 (or earlier). As part of the rapidly changing Python library landscape, we've been forced to react quickly to dependency changes, even where those libraries have been responsibly issuing future and deprecation warnings in our code base.
Major Changes:
- Implement new
set_params
andget_params
on ModelVisualizers to ensure wrapped estimator is being correctly accessed via the new Estimator methods. - Fix the test dependencies to prevent variability in CI (must periodically review dependencies to ensure we're testing what our users are experiencing).
- Change
model
param toestimator
param to ensure that Visualizer arguments match their property names so that inspect works with get and set params and other scikit-learn utility functions.
Minor Changes:
- Import scikit-learn private API
_safe_indexing
without error. - Remove any calls to
set_params
in Visualizer__init__
methods. - Modify test fixtures and baseline images to accommodate new sklearn implementation
- Set the numpy dependency to be less than 1.20 because this is causing Pickle issues with joblib and umap
- Add
shuffle=True
argument to any CV class that uses a random seed. - Set our CI matrix to Python and Miniconda 3.7 and 3.8
Hotfix 1.2.1
Deployed: Friday, January 15, 2021
Current Contributors: @rebeccabilbro, @bbengfort, @Paulj1989, @mattharrison
On December 22, 2020, scikit-learn released version 0.24 which deprecated the external use of scikit-learn's internal utilities such as safe_indexing
. Unfortunately, Yellowbrick depends on a few of these utilities and must refactor our internal code base to port this functionality or work around it. To ensure that Yellowbrick continues to work when installed via pip
, we have temporarily changed our scikit-learn dependency to be less than 0.24. We will update our dependencies on the v1.3 release when we have made the associated fixes.
Version 1.2
Deployed: Friday, October 9, 2020
Current Contributors: @rebeccabilbro, @lwgray, @VladSkripniuk, @Express50, @pdamodaran, @aldermartinez, @tktran, @bbengfort, @melonhead901, @Kautumn06, @ojedatony1616, @eschmier, @wagner2010, @ndanielsen
Major Changes:
- Added Q-Q plot as side-by-side option to the
ResidualsPlot
visualizer. - More robust handling of binary classification in
ROCAUC
visualization, standardizing the way that classifiers withpredict_proba
anddecision_function
methods are handling. Abinary
hyperparameter was added to the visualizer to ensure correct interpretation of binary ROCAUC plots. - Fixes to
ManualAlphaSelection
to move it from prototype to prime time including documentation, tests, and quick method. This method allows users to perform alpha selection visualization on non-CV estimators. - Removal of AppVeyor from the CI matrix after too many out-of-core (non-Yellowbrick) failures with setup and installation on the VisualStudio images. Yellowbrick CI currently omits Windows and Miniconda from the test matrix and we are actively looking for new solutions.
- Third party estimator wrapper in contrib to provide enhanced support for non-scikit-learn estimators such as those in Keras, CatBoost, and cuML.
Minor Changes:
- Allow users to specify colors for the
PrecisionRecallCurve
. - Update
ClassificationScoreVisualizer
base class to have aclass_colors_
learned attribute instead of acolors
property; additional polishing of multi-class colors inPrecisionRecallCurve
,ROCAUC
, andClassPredictionError
. - Update
KElbowVisualizer
fit method and quick method to allow passingsample_weight
parameter through the visualizer. - Enhancements to classification documentation to better discuss precision and recall and to diagnose with
PrecisionRecallCurve
andClassificationReport
visualizers. - Improvements to
CooksDistance
visualizer documentation. - Corrected
KElbowVisualizer
label and legend formatting. - Typo fixes to
ROCAUC
documentation, labels, and legend. Typo fix toManifold
documentation. - Use of
tight_layout
accessing the Visualizer figure property to finalize images and resolve discrepancies in plot directive images in documentation. - Add
get_param_names
helper function to identify keyword-only parameters that belong to a specific method. - Splits package namespace for
yellowbrick.regressor.residuals
to movePredictionError
to its own module,yellowbrick.regressor.prediction_error
. - Update tests to use
SVC
instead ofLinearSVC
and correctKMeans
scores based on updates to scikit-learn v0.23. - Continued maintenance and management of baseline images following dependency updates; removal of mpl.cbook dependency.
- Explicitly include license file in source distribution via
MANIFEST.in
. - Fixes to some deprecation warnings from
sklearn.metrics
. - Testing requirements depends on Pandas v1.0.4 or later.
- Reintegrates pytest-spec and verbose test logging, updates pytest dependency to v0.5.0 or later.
- Added Pandas v0.20 or later to documentation dependencies.
Version 1.1
Deployed: Wednesday, February 12, 2020
Contributors: @rebeccabilbro @bbengfort @Kautumn06 @lwgray @pdamodaran @wagner2010 @mchestnut91, @mgarod, @shivendra90, @naresh-bachwani, @percygautam, @navarretedaniel, @mmorrison1670, @ekwska, @sjainit
Major Changes:
- Quick methods (aka Oneliners), which return a fully fitted finalized visualizer object in only a single line, are now implemented for all Yellowbrick Visualizers. Test coverage has been added for all quick methods. The documentation has been updated to document and demonstrate the usage of the quick methods.
- Added Part of Speech tagging for raw text using spaCy and NLTK to POSTagVisualizer.
Minor Changes:
- Adds Board of Directors minutes for Spring meeting.
- Miscellaneous documentation corrections and fixes.
- Miscellaneous CI and testing corrections and fixes.
Hotfix 1.0.1
Deployed: Sunday, October 6, 2019
Contributors: @rebeccabilbro @Kautumn06 @bbengfort
Major API change: the poof()
method is now deprecated, please use show()
instead. After a significant discussion with community members, we have deprecated our original "make the magic happen" method due to concerns about the usage of the word. We've renamed the original method to and created a stub method with the original name that issues a deprecation warning and calls show()
.
Major Changes:
- Changes
poof()
toshow()
. - Updated clustering and regression example notebooks.
- Fixes a syntax error in Python 3.5 and earlier.
- Updated Manifold documentation to fix example bug.
- Added advisors names to the release changelog.
- Adds advisory board minutes for Fall 2019.
- Updates our Travis-CI semi-secure token for Slack integration.
Version 1.0
Deployed: Wednesday, August 28, 2019
Contributors: @rebeccabilbro @bbengfort @Kautumn06 @lwgray @pdamodaran @naresh-bachwani @ndanielsen @MrDawson @navarretedaniel @fdion @haleemason @discdiver @joeyzhang823 @jimmyshah @jc-healy @justinormont @arvkevi @mgarod @mike-curry00 @naba7 @nickpowersys @percygautam @pswaldia @rohit-ganapathy @rwhitt2049 @Sangarshanan @souravsingh @thomasjpfan @zjpoh @xingularity
Note: Python 2 Deprecation: Please note that this release deprecates Yellowbrick's support for Python 2.7. After careful consideration and following the lead of our primary dependencies (NumPy, scikit-learn, and Matplolib), we have chosen to move forward with the community and support Python 3.4 and later.
Major Changes:
- New
JointPlot
visualizer that is specifically designed for machine learning. The new visualizer can compare a feature to a target, features to features, and even feature to feature to target using color. The visualizer gives correlation information at a glance and is designed to work on ML datasets. - New
PosTagVisualizer
is specifically designed for diagnostics around natural language processing and grammar-based feature extraction for machine learning. This new visualizer shows counts of different parts-of-speech throughout a tagged corpus. - New datasets module that provide greater support for interacting with Yellowbrick example datasets including support for Pandas, npz, and text corpora.
- Management repository for Yellowbrick example data,
yellowbrick-datasets
. - Add support for matplotlib 3.0.1 or greater.
UMAPVisualizer
as an alternative manifold to TSNE for corpus visualization that is fast enough to not require preprocessing PCA or SVD decomposition and preserves higher order similarities and distances.- Added
..plot::
directives to the documentation to automatically build the images along with the docs and keep them as up to date as possible. The directives also include the source code making it much simpler to recreate examples. - Added
target_color_type
functionality to determine continuous or discrete color representations based on the type of the target variable. - Added alpha param for both test and train residual points in
ResidualsPlot
. - Added
frameon
param toManifold
. - Added frequency sort feature to
PosTagVisualizer
. - Added elbow detection using the "kneedle" method to the
KElbowVisualizer
. - Added governance document outlining new Yellowbrick structure.
- Added
CooksDistance
regression visualizer. - Updated
DataVisualizer
to handle target type identification. - Extended
DataVisualizer
and updated its subclasses. - Added
ProjectionVisualizer
base class. - Restructured
yellowbrick.target
,yellowbrick.features
, andyellowbrick.model_selection
API. - Restructured regressor and classifier API.
Minor Changes:
- Updated
Rank2D
to include Kendall-Tau metric. - Added user specification of ISO F1 values to
PrecisionRecallCurve
and updated the quick method to accept train and test splits. - Added code review checklist and conventions to the documentation and expanded the contributing docs to include other tricks and tips.
- Added polish to missing value visualizers code, tests, and documentation.
- Improved
RankD
tests for better coverage. - Added quick method test for
DispersionPlot
visualizer. - BugFix: fixed resolve colors bug in TSNE and UMAP text visualizers and added regression tests to prevent future errors.
- BugFix: Added support for Yellowbrick palettes to return
colormap
. - BugFix: fixed
PrecisionRecallCurve
visual display problem with multi-class labels. - BugFix: fixed the
RFECV
step display bug. - BugFix: fixed error in distortion score calculation.
- Extended
FeatureImportances
documentation and tests for stacked importances and added a warning when stack should be true. - Improved the documentation readability and structure.
- Refreshed the
README.md
and added testing and documentation READMEs. - Updated the gallery to generate thumbnail-quality images.
- Updated the example notebooks and created a quickstart notebook.
- Fixed broken links in the documentation.
- Enhanced the
SilhouetteVisualizer
withlegend
andcolor
parameter, while also move labels to the y-axis. - Extended
FeatureImportances
docs/tests for stacked importances. - Documented the
yellowbrick.download
script. - Added JOSS citation for "Yellowbrick: Visualizing the Scikit-Learn Model Selection Process".
- Added new pull request (PR) template.
- Added
alpha
param to PCA Decomposition Visualizer. - Updated documentation with affiliations.
- Added a
windows_tol
for the visual unittest suite. - Added stacked barchart to
PosTagVisualizer
. - Let users set colors for
FreqDistVisualizer
and otherax_bar
visualizers. - Updated
Manifold
to extendProjectionVisualizer
. - Check if an estimator is already fitted before calling
fit
method. - Ensure
poof
returnsax
.
Compatibility Notes:
- This version provides support for matplotlib 3.0.1 or greater and drops support for matplotlib versions less than 2.0.
- This version drops support for Python 2
Hotfix 0.9.1
This hotfix adds matplotlib3 support by requiring any version of matplotlib except for 3.0.0 which had a backend bug that affected Yellowbrick. Note that this hotfix includes changes to tests that will need to be resolved when merging from develop (see #725).
- Deployed: Tuesday, February 5, 2019
- Contributors: @bbengfort, @rebeccabilbro, @ianozsvald, @fdion