All notable changes to the OpenModels project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Automated CI workflow (
.github/workflows/sklearn-compat.yml) to test against scikit-learn 1.6.1, 1.7.2, and 1.8.0 on every push tomain, weekly, and on demand - README compatibility matrix listing tested scikit-learn versions with a call for users to report incompatibilities
AttributeErrorwhen serializingSimpleImputeron scikit-learn < 1.8.0:_fill_dtype(introduced in 1.8.0) is now skipped gracefully via ahasattrguard, preserving compatibility across all supported versions
- High-level
save()andload()methods onSerializationManagerfor convenient file I/O - README example for custom estimator support
- Minor internal refactoring: removed redundant code and enforced UTF-8 encoding for text mode I/O
- Support for custom and third-party estimators via
custom_estimatorsparameter onSklearnSerializer - README example showing integration with chemotools pipelines
- Taskfile for standardised developer workflows (
test,lint,format,type-check,build, etc.) - Python 3.13 added to CI matrix
- Code coverage reporting via codecov
- Moved
SklearnSerializerto its own subfolder (openmodels/serializers/sklearn/) for better organisation - Stopped tracking
poetry.lockin version control
- Extended scikit-learn estimator support:
TargetEncoder,SplineTransformer(scipy BSpline),IsolationForestNeighborhoodComponentsAnalysis,LatentDirichletAllocationColumnTransformer,FeatureUnionOutputCodeClassifier,OneVsOneClassifierHDBSCAN,FeatureAgglomeration,BisectingKMeansGenericUnivariateSelect,SelectFdr,SelectFpr,SelectFwe,SelectKBest,SelectPercentileHashingVectorizer,FeatureHasher,SparseRandomProjection,SkewedChi2SamplerLocalOutlierFactor(predict-only)
- Python function serialisation support (used by feature selection estimators)
- Dtype-robust sparse matrix comparison in tests
RandomTreesEmbeddingre-enabled afterOneHotEncoderfix
- Extended scikit-learn estimator support:
Birch,TunedThresholdClassifierCVGradientBoostingClassifier,GradientBoostingRegressorHistGradientBoostingClassifier,HistGradientBoostingRegressorGaussianProcessClassifier,GaussianProcessRegressor(with kernel serialisation)CalibratedClassifierCV,LinearDiscriminantAnalysis
- Refactored serialization layer to a mixin-based architecture (
NumpySerializerMixin,ScipySerializerMixin) for extensibility and modularity - Improved recursive deserialization for nested estimators and special types
- scikit-learn version tracking: the serialized payload now records the sklearn version used, and a
UserWarningis raised on version mismatch at deserialization time - Dynamic TestPyPI badge in README
- CI badge auto-update loop
- Type and dtype tracking for model parameters during serialization
- Support for nested estimators (e.g. pipelines, meta-estimators)
KDTreeserialization supportIsotonicRegression,TweedieRegressor,PoissonRegressor,GammaRegressorsupport- NumPy array dtype preservation (fixes
BaggingRegressorand similar)
- Serialization of numpy arrays of estimators
- Pipeline serialization
- Dynamic estimator loading using
sklearn.utils.discovery.all_estimators - Improved attribute handling in
SklearnSerializer
- Initial release of OpenModels library
- Core functionality for serializing and deserializing machine learning models
- Support for scikit-learn models:
- Classification: LogisticRegression, RandomForestClassifier, SVC, BernoulliNB, GaussianNB, MultinomialNB, ComplementNB, Perceptron
- Regression: LinearRegression, Lasso, Ridge, RandomForestRegressor, SVR
- Clustering: KMeans
- Dimensionality Reduction: PCA
- Other: PLSRegression
- JSON serialization format
- Pickle serialization format
- Extensible architecture for adding new model types and serialization formats
- Basic test suite for supported models
- Documentation including README, LICENSE, and CONTRIBUTING guidelines
- Implemented safe alternatives to pickle serialization
- Support for TensorFlow models
- YAML serialization format
- Enhanced documentation with more examples and use cases
- Support for more scikit-learn models including ensemble methods and neural networks