Releases: decargroup/pykoop
pykoop v2.0.1
This release removes pandas
from setup.py
.
Full changelog: v2.0.0...v2.0.1
pykoop v2.0.0
This release introduces two breaking changes, necessitating a new major version:
- The deprecated
KoopmanPipeline.predict_multistep()
method has been removed. - They
kernel_or_ift
parameter ofRandomFourierKernelApprox
has been renamed tokernel_or_ft
, and the correspondingift_
attribute has been renamed toft_
.
Other than bug fixes, the most notable improvement is the significant reduction of import time, which is due to the removal of the pandas
dependency.
Full changelog: v1.2.3...v2.0.0
New features
- Removed
pandas
dependency to resolve slow imports (#166)
Bug fixes
- Fixed incorrect argument names for kernel approximation (#175)
- Fixed bug when using
multioutput='raw_values'
regression metric keyword argument when scoring (#164) - Fixed prediction bug when no inputs are used (#173)
- Fixed
scikit-learn
method resolution order (#177) - Fixed default LMI strictness (#168)
pykoop v1.2.3
This release once again fixes a problem in the Read the Docs config file.
Full changelog: v1.2.2...v1.2.3
pykoop v1.2.2
This release fixes a typo in the Read the Docs config file.
Full changelog: v1.2.1...v1.2.2
pykoop v1.2.1
This release adds a missing Read the Docs config file that was preventing the documentation from being built.
Full changelog: v1.2.0...v1.2.1
pykoop v1.2.0
This release allows users to manually set a Koopman matrix computed outside of pykoop
for easier interoperability with other libraries or custom regression code. The release also adds global configuration management, specifically to skip input validation. This can significantly (2x!) speed up predict_trajectory()
and other methods that call lift()
, retract()
, etc. frequently. Finally, this release fixes some awkward scoring behaviour, making score_trajectory()
work better in hyperparameter optimization setups.
Full changelog: v1.1.3...v1.2.0
New features
- Added
DataRegressor
to allowKoopmanPipeline
objects to be created directly from NumPy arrays (#129) - Added sklearn-style configuration management (
set_config(skip_validation)
,get_config()
andconfig_context(skip_validation)
) to allow skipping input validation in performance-critical areas (#151) - Added
KoopmanPipeline.frequency_response()
to compute the frequency response of a Koopman system without plotting the Bode plot (#143) - Added the
plot_error
parameter toplot_predicted_trajectory()
to allow plotting the prediction error instead of the trajectory (#148) - Made
DelayLiftingFn
compatible withSplitPipeline
(#145)
Bug fixes
- Fixed bug where
score_trajectory()
could return a worse score than theerror_score
, or even returnNaN
(#132)
pykoop v1.1.3
This release fixes a bug where diverging predictions were not scored correctly. It also adds the error_score
parameter to KoopmanPipeline.make_scorer()
and score_trajectory()
to allow more fine-grained control over the behaviour.
Full changelog: v1.1.2...v1.1.3
Bug fixes
- Fix incorrect scoring with
NaN
entries (#123)
pykoop v1.1.2
This release exists because I forgot to bump the version number in the source code when releasing v1.1.1. Sorry!
Full changelog: v1.1.1...v1.1.2
pykoop v1.1.1
This release fixes two bugs in KoopmanPipeline.predict_trajectory()
and lowers the setup.py
minimum Python version to 3.7 for Binder. However, 3.8 is still the lowest officially supported version.
Full changelog: v1.1.0...v1.1.1
Bug fixes
pykoop v1.1.0
This release features two new types of lifting functions: radial basis functions, and random Fourier features. Click the links for examples, or check them out on Binder!
You can now also use almost any scikit-learn
regressor as a backend for EDMD with EdmdMeta
. You can find a cool example of sparse regression with the lasso here.
Finally, two quality-of-life changes are introduced in this update. You can access your lifting function feature names with KoopmanLiftingFn.get_feature_names_out()
, and you can quickly plot Koopman predictions and Koopman operator properties with a bunch of plot_*()
methods scattered throughout the library. See below for more details.
Note that in this release, we are dropping official Python 3.7 support, though almost all features should still work.
Full changelog: v1.0.5...v1.1.0
New features
- Added radial basis function (RBF) lifting functions in
RbfLiftingFn
, along with several ways to choose centers (#103) - Added random Fourier feature (RFF) lifting functions in
KernelApproxLiftingFn
, along with other kernel approximations (#110) - Added constant lifting function in
ConstantLiftingFn
(#85) - Added support for
scikit-learn
linear regressors inEdmdMeta
(#92) - Added support for feature name tracking as strings in
KoopmanLiftingFn.get_feature_names_in()
andKoopmanLiftingFn.get_feature_names_out()
. If you pass in apandas.DataFrame
, thenpykoop
can take the feature names from there (#75) - Added easy plotting helpers in
KoopmanLiftingFn.plot_lifted_trajectory()
,KoopmanRegressor.plot_bode()
,KoopmanRegressor.plot_eigenvalues()
,KoopmanRegressor.plot_koopman_matrix()
,KoopmanRegressor.plot_svd()
,KoopmanPipeline.plot_predicted_trajectory()
,KoopmanPipeline.plot_bode()
,KoopmanPipeline.plot_eigenvalues()
,KoopmanPipeline.plot_koopman_matrix()
, andKoopmanPipeline.plot_svd()
(#83)
- Added
example_data_pendulum()
andexample_data_duffing()
.