Skip to main content

Easy decision boundary visualization for classifiers

Project description

decisioncanvas

A Python library for visualizing machine learning classifier decision boundaries with automatic dimensionality reduction and standardization.

Overview

decisioncanvas provides a simple, reliable way to create publication-quality visualizations of how classification models separate data. The library automatically handles high-dimensional data through PCA dimensionality reduction and ensures consistent scaling through built-in standardization.

Key Features

  • Simple API: Single function call for complete visualization
  • High-dimensional support: Automatic PCA with explained variance reporting
  • Scikit-learn compatibility: Works with any scikit-learn classifier
  • Multi-class support: Handles binary and multi-class classification
  • Built-in preprocessing: Automatic feature standardization
  • Customizable visualization: Configurable grid resolution, colors, and styling
  • Educational focus: Ideal for learning and teaching machine learning concepts

Installation

pip install decisioncanvas

Quick Start

from decisioncanvas import plot_decision_boundary
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression

# Load data and create model
X, y = load_iris(return_X_y=True)
model = LogisticRegression(max_iter=300)

# Visualize decision boundary
plot_decision_boundary(model, X, y)

Usage Examples

Basic Classification

from decisioncanvas import plot_decision_boundary
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# Prepare data
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
    data.data, data.target, test_size=0.3, random_state=42
)

# Train model
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

# Visualize with custom labels
plot_decision_boundary(
    model,
    X_train,
    y_train,
    class_names=data.target_names,
    title='Iris Classification Decision Boundary'
)

Advanced Customization

plot_decision_boundary(
    model,
    X,
    y,
    grid_resolution=400,
    alpha=0.4,
    padding=1.5,
    title='Custom Decision Boundary Visualization',
    figsize=(10, 8)
)

API Reference

plot_decision_boundary

plot_decision_boundary(
    model, X, y,
    class_names=None,
    standardize=True,
    pca_components=2,
    grid_resolution=300,
    padding=1.0,
    cmap_light=None,
    cmap_bold=None,
    alpha=0.3,
    title="Decision Boundary",
    fit_model=True,
    figsize=(8, 6),
    random_state=None
)

Parameters

Parameter Type Description Default
model estimator Scikit-learn compatible classifier Required
X array-like Feature matrix (n_samples, n_features) Required
y array-like Target labels (n_samples,) Required
class_names list or dict Custom class labels for legend None
standardize bool Apply feature standardization True
pca_components int Number of PCA components for dimensionality reduction 2
grid_resolution int Resolution of decision boundary grid 300
padding float Padding around data points in plot 1.0
cmap_light colormap Colormap for decision regions None (auto)
cmap_bold list Colors for data points None (auto)
alpha float Transparency of decision regions 0.3
title str Plot title "Decision Boundary"
fit_model bool Whether to fit the model on provided data True
figsize tuple Figure size (width, height) (8, 6)
random_state int Random state for PCA reproducibility None

Use Cases

  • Model evaluation: Visualize how different classifiers separate your data
  • Educational purposes: Demonstrate classification concepts in tutorials
  • Research presentations: Create publication-ready decision boundary plots
  • Debugging: Identify potential overfitting or data separation issues

Requirements

  • Python >= 3.7
  • numpy >= 1.18.0
  • scikit-learn >= 0.24.0
  • matplotlib >= 3.2.0

Contributing

Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Authors

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

decisioncanvas-1.0.1.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

decisioncanvas-1.0.1-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file decisioncanvas-1.0.1.tar.gz.

File metadata

  • Download URL: decisioncanvas-1.0.1.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for decisioncanvas-1.0.1.tar.gz
Algorithm Hash digest
SHA256 d5e627584103e6546ec27232a35401999cf84685644846d7b6d3b5c29a029b1e
MD5 52486dae05f38d037135a1b7c9170947
BLAKE2b-256 6c3bdf8e9684f9ec60d1d4b0bd912cd90c0c3c8bd490eca0c6124e44d70ed6d8

See more details on using hashes here.

File details

Details for the file decisioncanvas-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: decisioncanvas-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for decisioncanvas-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a8cb2977fa087d041c40ead11c750d29af33a48211a258187be94d63eae395ba
MD5 c2ff2c4ddd5eb314c5ebb5c7fb4e46e9
BLAKE2b-256 033e52e67a3858fd9de4ad2f22d1eb4ec4ccba2a9cbe4220e562b03d194ea72b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page