Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
ad37566
Update Dependencies for Latest Version Tests
bbengfort Jun 26, 2025
c1ca260
more baseline images
bbengfort Jun 26, 2025
35f7bfb
Merge branch 'develop' into update-deps
bbengfort Jun 26, 2025
60d800d
update python deps
bbengfort Jun 26, 2025
c50b225
Remove deprecated use_line_collection parameter from matplotlib stem()
lwgray Dec 22, 2025
440f6af
Fixed NumPy 2.0 and matplotlib 3.x compatibility issues in missing da…
lwgray Dec 25, 2025
4d204f7
Add scikit-learn 1.7.0 __sklearn_tags__ support to ContribEstimator w…
lwgray Dec 25, 2025
8d7cfd6
cluster: Fix NumPy 2.0 np.matrix deprecation in K-Elbow
lwgray Dec 25, 2025
4c4f64c
text: Fix NumPy 2.0 and scikit-learn 1.7 compatibility issues
lwgray Dec 26, 2025
ba87ef0
Fix NumPy 2.0 string representation and scikit-learn 1.7 RidgeCV API …
lwgray Dec 26, 2025
afb7db2
Fix matplotlib backend capitalization and meta test baseline images
lwgray Dec 27, 2025
d70c9fa
Fix NumPy 2.0 scalar types and matplotlib 3.10 ArtistList issues
lwgray Dec 27, 2025
6366854
Fix remaining test failures for sklearn 1.7 and pytest updates
lwgray Dec 27, 2025
d1c3652
docs: Update FreqDistVisualizer examples for sklearn 1.7 API
lwgray Dec 28, 2025
bdd4ffc
Fix conda environment creation syntax in CI workflow
lwgray Dec 28, 2025
e85da0a
Fix linting issues: add newline to .gitignore and run black formatter
lwgray Dec 28, 2025
3ff0aaf
ci: Add punkt_tab to NLTK downloads in test workflows
lwgray Dec 28, 2025
b12b2e8
ci: Add averaged_perceptron_tagger_eng to NLTK downloads
lwgray Dec 28, 2025
addd20f
test: Increase tolerance for TSNE image comparison tests
lwgray Dec 28, 2025
8ffb5c0
test: Regenerate TSNE baseline images and revert tolerance
lwgray Dec 28, 2025
6959f0f
Rerun Image Comparison Test on manifold
lwgray Dec 28, 2025
c068fde
Fix CI/CD test failures across platforms
lwgray Dec 28, 2025
24056c8
Fix test_locate_elbow with relative error tolerance
lwgray Dec 28, 2025
efdab23
Fix remaining CI failures
lwgray Dec 28, 2025
1a0d6bf
fix: Add perplexity parameter to InterclusterDistance for t-SNE
lwgray Dec 28, 2025
da22c90
test: Add baseline image for test_affinity_tsne_no_legend
lwgray Dec 28, 2025
b2b7633
test: Add tolerance for test_affinity_tsne_no_legend
lwgray Dec 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 7 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [3.8, 3.9]
python-version: [3.11, 3.12]
os: [ubuntu-latest, macos-latest, windows-latest]

steps:
Expand All @@ -38,7 +38,7 @@ jobs:
run: |
python -m pip install --upgrade pip
pip install -r tests/requirements.txt
python -m nltk.downloader popular
python -m nltk.downloader popular punkt_tab averaged_perceptron_tagger_eng

- name: Run Unit Tests
run: |
Expand All @@ -59,7 +59,7 @@ jobs:
fail-fast: false
matrix:
os: ["ubuntu-latest"]
python-version: ["3.8", "3.9"]
python-version: ["3.11", "3.12"]

steps:
- name: Checkout Code
Expand Down Expand Up @@ -88,9 +88,10 @@ jobs:
run: |
conda config --set always_yes yes --set changeps1 no
conda update -n base conda --yes
conda env create -f tests/requirements.txt -n yellowbrick python=${{ matrix.python-version }}
conda create -n yellowbrick python=${{ matrix.python-version }} pip --yes
conda activate yellowbrick
python -m nltk.downloader popular
pip install -r tests/requirements.txt
python -m nltk.downloader popular punkt_tab averaged_perceptron_tagger_eng

- name: Run Unit Tests
shell: bash -l {0}
Expand All @@ -116,7 +117,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9
python-version: 3.12

- name: Install Dependencies
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9
python-version: 3.12

- name: Install Dependencies
run: |
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -121,4 +121,7 @@ fabric.properties

# Data downloaded from Yellowbrick
data/
yellowbrick/datasets/fixtures
yellowbrick/datasets/fixtures

# Catboost
catboost_info
10 changes: 5 additions & 5 deletions docs/api/text/freqdist.rst
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ We first instantiate a ``FreqDistVisualizer`` object, and then call ``fit()`` on

vectorizer = CountVectorizer()
docs = vectorizer.fit_transform(corpus.data)
features = vectorizer.get_feature_names()
features = vectorizer.get_feature_names_out()

visualizer = FreqDistVisualizer(features=features, orient='v')
visualizer.fit(docs)
Expand All @@ -55,7 +55,7 @@ It is interesting to compare the results of the ``FreqDistVisualizer`` before an

vectorizer = CountVectorizer(stop_words='english')
docs = vectorizer.fit_transform(corpus.data)
features = vectorizer.get_feature_names()
features = vectorizer.get_feature_names_out()

visualizer = FreqDistVisualizer(features=features, orient='v')
visualizer.fit(docs)
Expand Down Expand Up @@ -87,7 +87,7 @@ Here is the plot for the cooking corpus (oriented horizontally this time):

vectorizer = CountVectorizer(stop_words='english')
docs = vectorizer.fit_transform(text for text in hobbies['cooking'])
features = vectorizer.get_feature_names()
features = vectorizer.get_feature_names_out()

visualizer = FreqDistVisualizer(
features=features, size=(1080, 720)
Expand Down Expand Up @@ -119,7 +119,7 @@ And for the gaming corpus (again oriented horizontally):

vectorizer = CountVectorizer(stop_words='english')
docs = vectorizer.fit_transform(text for text in hobbies['gaming'])
features = vectorizer.get_feature_names()
features = vectorizer.get_feature_names_out()

visualizer = FreqDistVisualizer(
features=features, size=(1080, 720)
Expand Down Expand Up @@ -153,7 +153,7 @@ Similar functionality as above can be achieved in one line using the associated

vectorizer = CountVectorizer(stop_words='english')
docs = vectorizer.fit_transform(text for text in hobbies['cinema'])
features = vectorizer.get_feature_names()
features = vectorizer.get_feature_names_out()

freqdist(features, docs, orient='v')

Expand Down
46 changes: 25 additions & 21 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,15 @@

## Basic information
## Basic information
NAME = "yellowbrick"
DESCRIPTION = "A suite of visual analysis and diagnostic tools for machine learning."
AUTHOR = "The scikit-yb developers"
EMAIL = "yellowbrick@googlegroups.com"
MAINTAINER = "The scikit-yb developers"
LICENSE = "Apache 2"
REPOSITORY = "https://github.com/DistrictDataLabs/yellowbrick"
PACKAGE = "yellowbrick"
URL = "http://scikit-yb.org/"
NAME = "yellowbrick"
DESCRIPTION = "A suite of visual analysis and diagnostic tools for machine learning."
AUTHOR = "The scikit-yb developers"
EMAIL = "yellowbrick@googlegroups.com"
MAINTAINER = "The scikit-yb developers"
LICENSE = "Apache 2"
REPOSITORY = "https://github.com/DistrictDataLabs/yellowbrick"
PACKAGE = "yellowbrick"
URL = "http://scikit-yb.org/"

## Define the keywords
KEYWORDS = (
Expand All @@ -52,19 +52,18 @@

## Define the classifiers
## See https://pypi.python.org/pypi?%3Aaction=list_classifiers
CLASSIFIERS = (
CLASSIFIERS = (
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: Apache Software License",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Software Development",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Scientific/Engineering :: Visualization",
Expand All @@ -78,14 +77,19 @@

## Directories to ignore in find_packages
EXCLUDES = (
"tests", "tests.*",
"tests",
"tests.*",
"bin",
"docs", "docs.*",
"docs",
"docs.*",
"fixtures",
"register",
"notebooks", "notebooks.*",
"examples", "examples.*",
"binder", "binder.*",
"notebooks",
"notebooks.*",
"examples",
"examples.*",
"binder",
"binder.*",
"paper",
)

Expand Down Expand Up @@ -164,7 +168,7 @@ def get_description_type(path=PKG_DESCRIBE):
"zip_safe": False,
"entry_points": {"console_scripts": []},
"install_requires": list(get_requires()),
"python_requires": ">=3.4, <4"
"python_requires": ">=3.10, <4",
}


Expand Down
Binary file modified tests/baseline_images/test_base/test_draw_visualizer_grid.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/baseline_images/test_base/test_draw_with_cols.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/baseline_images/test_base/test_draw_with_rows.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/baseline_images/test_cluster/test_elbow/test_timings.png
Binary file modified tests/baseline_images/test_draw/test_horizontal_bar_stack.png
Binary file modified tests/baseline_images/test_draw/test_labels_horizontal.png
Binary file modified tests/baseline_images/test_draw/test_labels_vertical.png
Binary file modified tests/baseline_images/test_draw/test_manual_legend.png
Binary file modified tests/baseline_images/test_draw/test_single_row_bar_stack.png
Binary file modified tests/baseline_images/test_draw/test_vertical_bar_stack.png
Binary file modified tests/baseline_images/test_features/test_pca/test_biplot_2d.png
Binary file modified tests/baseline_images/test_features/test_pca/test_biplot_3d.png
Binary file modified tests/baseline_images/test_features/test_pca/test_colorbar.png
Binary file modified tests/baseline_images/test_features/test_pca/test_continuous.png
Binary file modified tests/baseline_images/test_features/test_pca/test_discrete.png
Binary file modified tests/baseline_images/test_features/test_pca/test_heatmap.png
Binary file modified tests/baseline_images/test_features/test_pca/test_single.png
Binary file modified tests/baseline_images/test_features/test_pcoords/test_alpha.png
Binary file modified tests/baseline_images/test_features/test_radviz/test_radviz.png
Binary file modified tests/baseline_images/test_meta/test_random_visualizer.png
Loading
Loading