----------------------------------------------------------------------------------
Added
^^^^^
- Add ``XGBoostTabularTrees`` to hold ``xgb.Booster.trees_to_dataframe`` output
- Add ``DumpReader``, ``JsonDumpReader``, ``TextDumpReader`` classes in ``xgboost`` module
- Add ``ParsedXGBoostTabularTrees`` class to hold the outout of parser classes
- Add ``lightgbm`` module
- Add ``LightGBMTabularTrees`` class to hold output from ``lgb.Booster.trees_to_dataframe``
- Add ``export_tree_data`` as the user interface to export tree data for any supported model, dispatching to the correct model specific function
- Add ``sklearn`` module
- Add ``ScikitLearnTabularTrees`` class to hold tree data from ``GradientBoostingClassifier`` or ``GradientBoostingRegressor`` objects
- Add ``ScikitLearnHistTabularTrees`` class to hold tree data from ``HistGradientBoostingClassifier`` or ``HistGradientBoostingRegressor`` objects
- Add support for ``GradientBoostingClassifier`` or ``GradientBoostingRegressor`` with ``export_tree_data``
- Add support for ``HistGradientBoostingClassifier`` or ``HistGradientBoostingRegressor`` with ``export_tree_data``
- Add new ``BaseModelTabularTrees`` abstract base class for model specific tree data class implementations to inherit from
- Add ``convert_to_tabular_trees`` methods to ``LightGBMTabularTrees`` and ``XGBoostTabularTrees`` classes
- Add ``export_tree_data`` support for ``LightGBM`` and ``XBGoost`` ``Booster`` objects
- Add ``MonotonicConstraintResults`` class to hold outputs from ``validate_monotonic_constraints``
- Add ``PredictionDecomposition`` class to hold the outputs from ``decompose_prediction``
- Add ``ShapleyValues`` class to hold the outputs from ``calculate_shapley_values``
- Separate github action workflows to run test ``coverage``, ``pre-commit``, ``tox`` and check required files have changed
- Docs and ``readthedocs`` configuration
- Add ``pre-commit`` with ``black``, ``bandit``, ``mypy``, ``flake8``, ``isort``, ``docformatter`` and ``pydocstyle``
- Add type-hints
Changed
^^^^^^^
- Source code moved to ``src`` directory
- Change package import name to ``tabular_trees`` from ``ttrees``
- Rename ``xgb`` module to ``xgboost``
- Refactor ``xgb.parser`` and move functionality into ``xgboost`` module
- Rename ``validate_monotonic_constraints_df`` function to ``validate_monotonic_constraints``
- Refactor ``validate_monotonic_constraints`` function to accept ``TabularTrees`` objects
- Refactor ``decompose_prediction`` function to accept ``TabularTrees`` objects
- Rename ``shapley_values`` function to ``calculate_shapley_values``
- Refactor ``calculate_shapley_values`` function to accept ``TabularTrees`` objects
- Rename ``xgb.explainer`` module to ``explain``
- Move ``xgb.explain`` submodule out of ``xgboost`` module
- Move ``xgb.validate`` submodule out of ``xgboost`` module
- Project to use ``pyproject.toml`` and ``poetry`` as the build tool
- No longer set package version number in ``_version.py``, use ``pyproject.toml`` as the single source for the version number
- ``LightGBM``, ``Scikit-Learn`` and ``XGBoost`` are now optional extra dependencies
- Improve docstrings
- Update packages to latest versions in ``docs/requirements.txt``
- Update project ``README``
- Update notebooks in ``demo`` folder
- Exclude ``.tox`` directory in ``bandit``
- Dependency matrix in ``tox`` configuration
- Update dependencies in ``tox`` configuration