Skip to content

Releases: xRiskLab/fastwoe

Release v0.1.6a3

14 Dec 20:22

Choose a tag to compare

Changes

See CHANGELOG.md for detailed changes.

Installation

pip install fastwoe==0.1.6a3

What's New in v0.1.6a3

Check the CHANGELOG for full details.

Release v0.1.6a0-test

14 Dec 14:00

Choose a tag to compare

Changes

See CHANGELOG.md for detailed changes.

Installation

pip install fastwoe==0.1.6a0-test

What's New in v0.1.6a0-test

Check the CHANGELOG for full details.

Release v0.1.5

09 Dec 21:14

Choose a tag to compare

Changes

Performance Fix & Code Cleanup: Eliminated DataFrame fragmentation warning and removed debug statements

Bug Fixes

  • DataFrame Fragmentation Warning: Fixed PerformanceWarning: DataFrame is highly fragmented in transform() method
    • Root cause: Iteratively adding columns to DataFrame with woe_df[col] = woe_values caused memory fragmentation
    • Solution: Collect all WOE columns in a dictionary first, then create DataFrame in one operation
    • Performance improvement: Eliminates repeated memory reallocation during transform
    • User impact: No more annoying performance warnings when transforming data
  • Debug Print Statement: Removed leftover debug print("FAISS is available:", faiss) statement in FAISS KMeans binning
    • Cleaned up console output when using binning_method='faiss_kmeans'
  • Code Quality: Improved transform method efficiency following pandas best practices

Technical Details

  • Changed from: for col in columns: woe_df[col] = values (causes fragmentation)
  • Changed to: woe_columns = {col: values for col in columns}; woe_df = pd.DataFrame(woe_columns) (single allocation)
  • Follows pandas recommendation to use pd.concat(axis=1) or dict-based DataFrame construction

Testing

  • All 102 tests passing successfully ✅
  • Verified no fragmentation warnings with multi-feature datasets
  • Backward compatible: transform output unchanged

Installation

pip install fastwoe==0.1.5

See CHANGELOG.md for full details.

v0.1.5rc1

26 Oct 17:00

Choose a tag to compare

v0.1.5rc1 Pre-release
Pre-release

Clean API refactoring and Pythonic input handling.

  • Smart feature naming from monotonic constraints
  • 1D array support with auto-reshaping
  • Eliminated conversion warnings
  • All 161 tests passing

v0.1.5a1: Multiclass WOE Refactoring & Bug Fixes

25 Oct 15:09

Choose a tag to compare

🎉 Release v0.1.5a1: Multiclass WOE Refactoring & Bug Fixes

🏗️ Code Organization

  • Multiclass Separation: Extracted multiclass functionality into fastwoe_multiclass.py
    • Created MulticlassWoeMixin for clean separation of concerns
    • Reduced main file complexity by ~300 lines
  • Type Stubs: Added typings/ folder for better IDE support

🐛 Multiclass WOE Bug Fixes

  • Fixed missing X parameter causing zero counts and divide-by-zero warnings
  • Fixed array flattening issue causing NaN values
  • Fixed WOE calculation formula (removed incorrect epsilon)
  • Fixed probability prediction logic with proper simple-vs-composite hypothesis (Good, 1950)
  • Fixed double sigmoid application and loop storage issues

🔧 Monotonic Constraints Fix

  • Fixed infinity symbol parsing in bin labels (-∞, )
  • Proper handling of infinite bounds in isotonic regression

✅ Testing & Quality

  • All 156 tests passing
  • 73% test coverage
  • Type checking clean (ty check)
  • Linting clean (ruff check & ruff format)

📚 Documentation

  • Updated README with multiclass monotonic constraints support
  • Updated examples: fastwoe_multiclass.ipynb, fastwoe_monotonic.ipynb
  • Added comprehensive multiclass WOE guide

See CHANGELOG.md for full details.

Release v0.1.4.post2: Monotonic Constraints Support

05 Oct 15:21

Choose a tag to compare

Monotonic Constraints Support

This release adds comprehensive monotonic constraints support across all binning methods, essential for credit scoring compliance and regulatory requirements.

New Features:

  • Monotonic Constraints: Complete implementation across all binning methods
  • Tree Method: Native scikit-learn monotonic constraints
  • KBins Method: Isotonic regression post-processing
  • FAISS KMeans Method: Isotonic regression post-processing
  • Constraint Values: 1 (increasing), -1 (decreasing), 0 (no constraint)
  • Comprehensive Testing: Extensive test coverage for all scenarios
  • Enhanced Documentation: Updated README and examples

Technical Details:

  • API: Added monotonic_cst parameter to FastWoe constructor
  • Validation: Comprehensive input validation with clear error messages
  • Binning Info: Constraints stored in binning_info_ and displayed in summaries
  • Isotonic Regression: Uses scikit-learn's IsotonicRegression for KBins/FAISS
  • Backward Compatibility: Fully compatible with existing code

Examples:

  • New: examples/fastwoe_monotonic.py - Comprehensive demonstration
  • Shows all binning methods with constraints
  • Compares KBins strategies (uniform, quantile, kmeans)
  • Analyzes monotonic patterns and performance

Bug Fixes:

  • Fixed FAISS API compatibility issues
  • Fixed type checking configuration
  • Improved exception handling in tests

Installation: pip install fastwoe==0.1.4.post2

Release v0.1.4: Multiclass Support & Enhanced Tree Binning

03 Oct 21:15

Choose a tag to compare

Major Features

🎯 Multiclass WOE Encoding

  • One-vs-rest approach for targets with 3+ classes
  • Automatic detection of multiclass vs binary targets
  • Multiple output columns per feature for multiclass scenarios
  • Class-specific methods: predict_proba_class(), predict_ci_class()
  • Support for string/integer labels in multiclass scenarios

🌳 Enhanced Tree Binning

  • Decision tree as default binner for numerical features
  • Fixed NaN values in the last bin for numerical features
  • Optimized default parameters: max_depth=3, random_state=42
  • Unified binner_kwargs API for consistent parameter passing

Improvements

🔧 Bug Fixes

  • Fixed NaN values appearing in the last bin for numerical features
  • Improved error handling and validation
  • Enhanced type checking with comprehensive configuration

📚 Documentation & Examples

  • Updated README with multiclass examples and API documentation
  • Added comprehensive multiclass example (fastwoe_multiclass.py)
  • Enhanced type checking configuration for examples
  • Updated CHANGELOG with detailed release notes

🧪 Testing & Quality

  • Fixed all type checking issues across core library, tests, and examples
  • Added comprehensive test coverage for multiclass functionality
  • Enhanced CI/CD pipeline with proper type checking

Breaking Changes

  • Decision tree is now the default binner for numerical features (was KMeans)
  • Multiclass targets automatically detected and handled with one-vs-rest encoding

Migration Guide

If you were using KMeans binning explicitly, update your code:

# Old (explicit KMeans)
encoder = FastWoe(numerical_binner='kmeans')

# New (default decision tree, or explicit KMeans)
encoder = FastWoe()  # Uses decision tree by default
encoder = FastWoe(numerical_binner='kmeans')  # Still works

Performance Improvements

  • Faster numerical binning with optimized decision tree parameters
  • Improved memory efficiency for multiclass scenarios
  • Enhanced parallel processing for large datasets

Full Changelog: v0.1.3...v0.1.4

Release v0.1.3.post1: Enhanced Statistical Analysis & Developer Experience

23 Sep 13:30

Choose a tag to compare

Enhanced Statistical Analysis & Developer Experience

  • IV Standard Errors: Add confidence intervals and significance testing for Information Value calculations
  • Series Input Support: Fix 'Series' object has no attribute 'columns' error
  • Type Checking Integration: Integrate pyrefly type checking with CI workflows
  • FAISS GPU Support: Add fastwoe[faiss-gpu] optional dependency and improve dependency management
  • Improved UX: Change default warn_on_numerical=False (numerical binning is now core feature)
  • Local Testing: Add act integration for local GitHub Actions testing
  • Enhanced Documentation: Comprehensive guides and examples with improved mathematical framework
  • Development Automation: Add Make commands for streamlined workflows

Release v0.1.2.post4

15 Sep 14:08

Choose a tag to compare

Changes

Installation

pip install fastwoe==v0.1.2.post4

Release v0.1.2.post3

14 Sep 21:10

Choose a tag to compare

Changes

Installation

pip install fastwoe==v0.1.2.post3