pykoop
pykoop
is a Koopman operator identification library written in Python. It
allows the user to specify Koopman lifting functions and regressors in order to
learn a linear model of a given system in the lifted space.
To learn more about Koopman operator theory, check out this talk or this review article.
pykoop
places heavy emphasis on modular lifting function construction and
scikit-learn
compatibility. The library aims to make it easy to
automatically find good lifting functions and regressor hyperparameters by
leveraging scikit-learn
’s existing cross-validation infrastructure.
pykoop
also gracefully handles control inputs and multi-episode datasets
at every stage of the pipeline.
pykoop
also includes several experimental regressors that use linear matrix
inequalities to constraint the asymptotic stability of the Koopman system, or
regularize the regression using its H-infinity norm. Check out
arXiv:2110.09658 [eess.SY] and
arXiv:2102.03613 [eess.SY] for details.
Example
Consider Tikhonov-regularized EDMD with polynomial lifting functions applied to
mass-spring-damper data. Using pykoop
, this can be implemented as:
import pykoop
from sklearn.preprocessing import MaxAbsScaler, StandardScaler
# Get example mass-spring-damper data
eg = pykoop.example_data_msd()
# Create pipeline
kp = pykoop.KoopmanPipeline(
lifting_functions=[
('ma', pykoop.SkLearnLiftingFn(MaxAbsScaler())),
('pl', pykoop.PolynomialLiftingFn(order=2)),
('ss', pykoop.SkLearnLiftingFn(StandardScaler())),
],
regressor=pykoop.Edmd(alpha=1),
)
# Fit the pipeline
kp.fit(
eg['X_train'],
n_inputs=eg['n_inputs'],
episode_feature=eg['episode_feature'],
)
# Predict using the pipeline
X_pred = kp.predict_trajectory(eg['x0_valid'], eg['u_valid'])
# Score using the pipeline
score = kp.score(eg['X_valid'])
# Plot results
kp.plot_predicted_trajectory(eg['X_valid'], plot_input=True)
More examples are available in examples/
, in notebooks/
, or on
binder.
Library layout
Most of the required classes and functions have been imported into the
pykoop
namespace. The most important object is the
pykoop.KoopmanPipeline
, which requires a list of lifting functions and
a regressor.
Some example lifting functions are
scikit-learn
preprocessors can be wrapped into lifting functions using
pykoop.SkLearnLiftingFn
. States and inputs can be lifted independently
using pykoop.SplitPipeline
. This is useful to avoid lifting inputs.
Some basic regressors included are
pykoop.Edmd
(includes Tikhonov regularization),pykoop.Dmdc
, and
More advanced (and experimental) LMI-based regressors are included in the
pykoop.lmi_regressors
namespace. They allow for different kinds of
regularization as well as hard constraints on the Koopman operator.
You can roll your own lifting functions and regressors by inheriting from
pykoop.KoopmanLiftingFn
, pykoop.EpisodeIndependentLiftingFn
,
pykoop.EpisodeDependentLiftingFn
, and
pykoop.KoopmanRegressor
.
Some sample dynamic models are also included in the pykoop.dynamic_models
namespace.
Installation and testing
pykoop
can be installed from PyPI using
$ pip install pykoop
Additional LMI solvers can be installed using
$ pip install mosek
$ pip install cvxopt
$ pip install smcp
Mosek is recommended, but is nonfree and requires a license.
The library can be tested using
$ pip install -r requirements-dev.txt
$ pytest
Note that pytest
must be run from the repository’s root directory.
To skip unit tests that require a MOSEK license, including all doctests and examples, run
$ pytest ./tests -k "not mosek"
The documentation can be compiled using
$ cd doc
$ make html
If you want a hook to check source code formatting before allowing a commit, you can use
$ cd .git/hooks/
$ ln -s ../../.githooks/pre-commit .
$ chmod +x ./pre-commit
You will need yapf
installed for this.
Citation
If you use this software in your research, please cite it as below or see
CITATION.cff
.
@software{dahdah_pykoop_2022,
title={{decargroup/pykoop}},
doi={10.5281/zenodo.5576490},
url={https://github.com/decargroup/pykoop},
publisher={Zenodo},
author={Steven Dahdah and James Richard Forbes},
version = {{v1.2.3}},
year={2022},
}
License
This project is distributed under the MIT License, except the contents of
pykoop/_sklearn_metaestimators/
, which are from the scikit-learn
project, and are distributed under the BSD-3-Clause License.
- Introduction
- Koopman pipeline
- pykoop.KoopmanPipeline
KoopmanPipeline
KoopmanPipeline.liting_functions_
KoopmanPipeline.regressor_
KoopmanPipeline.transformers_fit_
KoopmanPipeline.regressor_fit_
KoopmanPipeline.n_features_in_
KoopmanPipeline.n_states_in_
KoopmanPipeline.n_inputs_in_
KoopmanPipeline.n_features_out_
KoopmanPipeline.n_states_out_
KoopmanPipeline.n_inputs_out_
KoopmanPipeline.min_samples_
KoopmanPipeline.episode_feature_
KoopmanPipeline.feature_names_in_
KoopmanPipeline.__init__()
KoopmanPipeline.fit()
KoopmanPipeline.fit_transform()
KoopmanPipeline.fit_transformers()
KoopmanPipeline.frequency_response()
KoopmanPipeline.get_feature_names_in()
KoopmanPipeline.get_feature_names_out()
KoopmanPipeline.get_metadata_routing()
KoopmanPipeline.get_params()
KoopmanPipeline.inverse_transform()
KoopmanPipeline.lift()
KoopmanPipeline.lift_input()
KoopmanPipeline.lift_state()
KoopmanPipeline.make_scorer()
KoopmanPipeline.n_samples_in()
KoopmanPipeline.plot_bode()
KoopmanPipeline.plot_eigenvalues()
KoopmanPipeline.plot_koopman_matrix()
KoopmanPipeline.plot_lifted_trajectory()
KoopmanPipeline.plot_predicted_trajectory()
KoopmanPipeline.plot_svd()
KoopmanPipeline.predict()
KoopmanPipeline.predict_multistep()
KoopmanPipeline.predict_trajectory()
KoopmanPipeline.retract()
KoopmanPipeline.retract_input()
KoopmanPipeline.retract_state()
KoopmanPipeline.score()
KoopmanPipeline.set_fit_request()
KoopmanPipeline.set_output()
KoopmanPipeline.set_params()
KoopmanPipeline.transform()
- pykoop.SplitPipeline
SplitPipeline
SplitPipeline.lifting_functions_state_
SplitPipeline.lifting_functions_input_
SplitPipeline.n_features_in_
SplitPipeline.n_states_in_
SplitPipeline.n_inputs_in_
SplitPipeline.n_features_out_
SplitPipeline.n_states_out_
SplitPipeline.n_inputs_out_
SplitPipeline.min_samples_
SplitPipeline.episode_feature_
SplitPipeline.feature_names_in_
SplitPipeline.__init__()
SplitPipeline.fit()
SplitPipeline.fit_transform()
SplitPipeline.get_feature_names_in()
SplitPipeline.get_feature_names_out()
SplitPipeline.get_metadata_routing()
SplitPipeline.get_params()
SplitPipeline.inverse_transform()
SplitPipeline.lift()
SplitPipeline.lift_input()
SplitPipeline.lift_state()
SplitPipeline.n_samples_in()
SplitPipeline.plot_lifted_trajectory()
SplitPipeline.retract()
SplitPipeline.retract_input()
SplitPipeline.retract_state()
SplitPipeline.set_fit_request()
SplitPipeline.set_output()
SplitPipeline.set_params()
SplitPipeline.transform()
- pykoop.combine_episodes
- pykoop.extract_initial_conditions
- pykoop.extract_input
- pykoop.score_trajectory
- pykoop.shift_episodes
- pykoop.split_episodes
- pykoop.strip_initial_conditions
- pykoop.KoopmanPipeline
- Lifting functions
- pykoop.BilinearInputLiftingFn
BilinearInputLiftingFn
BilinearInputLiftingFn.n_features_in_
BilinearInputLiftingFn.n_states_in_
BilinearInputLiftingFn.n_inputs_in_
BilinearInputLiftingFn.n_features_out_
BilinearInputLiftingFn.n_states_out_
BilinearInputLiftingFn.n_inputs_out_
BilinearInputLiftingFn.min_samples_
BilinearInputLiftingFn.episode_feature_
BilinearInputLiftingFn.feature_names_in_
BilinearInputLiftingFn.__init__()
BilinearInputLiftingFn.fit()
BilinearInputLiftingFn.fit_transform()
BilinearInputLiftingFn.get_feature_names_in()
BilinearInputLiftingFn.get_feature_names_out()
BilinearInputLiftingFn.get_metadata_routing()
BilinearInputLiftingFn.get_params()
BilinearInputLiftingFn.inverse_transform()
BilinearInputLiftingFn.lift()
BilinearInputLiftingFn.lift_input()
BilinearInputLiftingFn.lift_state()
BilinearInputLiftingFn.n_samples_in()
BilinearInputLiftingFn.plot_lifted_trajectory()
BilinearInputLiftingFn.retract()
BilinearInputLiftingFn.retract_input()
BilinearInputLiftingFn.retract_state()
BilinearInputLiftingFn.set_fit_request()
BilinearInputLiftingFn.set_output()
BilinearInputLiftingFn.set_params()
BilinearInputLiftingFn.transform()
- pykoop.ConstantLiftingFn
ConstantLiftingFn
ConstantLiftingFn.n_features_in_
ConstantLiftingFn.n_states_in_
ConstantLiftingFn.n_inputs_in_
ConstantLiftingFn.n_features_out_
ConstantLiftingFn.n_states_out_
ConstantLiftingFn.n_inputs_out_
ConstantLiftingFn.min_samples_
ConstantLiftingFn.episode_feature_
ConstantLiftingFn.feature_names_in_
ConstantLiftingFn.__init__()
ConstantLiftingFn.fit()
ConstantLiftingFn.fit_transform()
ConstantLiftingFn.get_feature_names_in()
ConstantLiftingFn.get_feature_names_out()
ConstantLiftingFn.get_metadata_routing()
ConstantLiftingFn.get_params()
ConstantLiftingFn.inverse_transform()
ConstantLiftingFn.lift()
ConstantLiftingFn.lift_input()
ConstantLiftingFn.lift_state()
ConstantLiftingFn.n_samples_in()
ConstantLiftingFn.plot_lifted_trajectory()
ConstantLiftingFn.retract()
ConstantLiftingFn.retract_input()
ConstantLiftingFn.retract_state()
ConstantLiftingFn.set_fit_request()
ConstantLiftingFn.set_output()
ConstantLiftingFn.set_params()
ConstantLiftingFn.transform()
- pykoop.DelayLiftingFn
DelayLiftingFn
DelayLiftingFn.n_features_in_
DelayLiftingFn.n_states_in_
DelayLiftingFn.n_inputs_in_
DelayLiftingFn.n_features_out_
DelayLiftingFn.n_states_out_
DelayLiftingFn.n_inputs_out_
DelayLiftingFn.min_samples_
DelayLiftingFn.episode_feature_
DelayLiftingFn.feature_names_in_
DelayLiftingFn.__init__()
DelayLiftingFn.fit()
DelayLiftingFn.fit_transform()
DelayLiftingFn.get_feature_names_in()
DelayLiftingFn.get_feature_names_out()
DelayLiftingFn.get_metadata_routing()
DelayLiftingFn.get_params()
DelayLiftingFn.inverse_transform()
DelayLiftingFn.lift()
DelayLiftingFn.lift_input()
DelayLiftingFn.lift_state()
DelayLiftingFn.n_samples_in()
DelayLiftingFn.plot_lifted_trajectory()
DelayLiftingFn.retract()
DelayLiftingFn.retract_input()
DelayLiftingFn.retract_state()
DelayLiftingFn.set_fit_request()
DelayLiftingFn.set_output()
DelayLiftingFn.set_params()
DelayLiftingFn.transform()
- pykoop.KernelApproxLiftingFn
KernelApproxLiftingFn
KernelApproxLiftingFn.n_features_in_
KernelApproxLiftingFn.n_states_in_
KernelApproxLiftingFn.n_inputs_in_
KernelApproxLiftingFn.n_features_out_
KernelApproxLiftingFn.n_states_out_
KernelApproxLiftingFn.n_inputs_out_
KernelApproxLiftingFn.min_samples_
KernelApproxLiftingFn.episode_feature_
KernelApproxLiftingFn.feature_names_in_
KernelApproxLiftingFn.kernel_approx_
KernelApproxLiftingFn.n_features_kernel_
KernelApproxLiftingFn.__init__()
KernelApproxLiftingFn.kernel_approx
KernelApproxLiftingFn.fit()
KernelApproxLiftingFn.fit_transform()
KernelApproxLiftingFn.get_feature_names_in()
KernelApproxLiftingFn.get_feature_names_out()
KernelApproxLiftingFn.get_metadata_routing()
KernelApproxLiftingFn.get_params()
KernelApproxLiftingFn.inverse_transform()
KernelApproxLiftingFn.lift()
KernelApproxLiftingFn.lift_input()
KernelApproxLiftingFn.lift_state()
KernelApproxLiftingFn.n_samples_in()
KernelApproxLiftingFn.plot_lifted_trajectory()
KernelApproxLiftingFn.retract()
KernelApproxLiftingFn.retract_input()
KernelApproxLiftingFn.retract_state()
KernelApproxLiftingFn.set_fit_request()
KernelApproxLiftingFn.set_output()
KernelApproxLiftingFn.set_params()
KernelApproxLiftingFn.transform()
- pykoop.PolynomialLiftingFn
PolynomialLiftingFn
PolynomialLiftingFn.transformer_
PolynomialLiftingFn.transform_order_
PolynomialLiftingFn.inverse_transform_order_
PolynomialLiftingFn.n_features_in_
PolynomialLiftingFn.n_states_in_
PolynomialLiftingFn.n_inputs_in_
PolynomialLiftingFn.n_features_out_
PolynomialLiftingFn.n_states_out_
PolynomialLiftingFn.n_inputs_out_
PolynomialLiftingFn.min_samples_
PolynomialLiftingFn.episode_feature_
PolynomialLiftingFn.feature_names_in_
PolynomialLiftingFn.__init__()
PolynomialLiftingFn.fit()
PolynomialLiftingFn.fit_transform()
PolynomialLiftingFn.get_feature_names_in()
PolynomialLiftingFn.get_feature_names_out()
PolynomialLiftingFn.get_metadata_routing()
PolynomialLiftingFn.get_params()
PolynomialLiftingFn.inverse_transform()
PolynomialLiftingFn.lift()
PolynomialLiftingFn.lift_input()
PolynomialLiftingFn.lift_state()
PolynomialLiftingFn.n_samples_in()
PolynomialLiftingFn.plot_lifted_trajectory()
PolynomialLiftingFn.retract()
PolynomialLiftingFn.retract_input()
PolynomialLiftingFn.retract_state()
PolynomialLiftingFn.set_fit_request()
PolynomialLiftingFn.set_output()
PolynomialLiftingFn.set_params()
PolynomialLiftingFn.transform()
- pykoop.RbfLiftingFn
RbfLiftingFn
RbfLiftingFn.n_features_in_
RbfLiftingFn.n_states_in_
RbfLiftingFn.n_inputs_in_
RbfLiftingFn.n_features_out_
RbfLiftingFn.n_states_out_
RbfLiftingFn.n_inputs_out_
RbfLiftingFn.min_samples_
RbfLiftingFn.episode_feature_
RbfLiftingFn.feature_names_in_
RbfLiftingFn.rbf_
RbfLiftingFn.centers_
RbfLiftingFn.offset_
RbfLiftingFn.__init__()
RbfLiftingFn.rbf
RbfLiftingFn.centers
RbfLiftingFn.shape
RbfLiftingFn.offset
RbfLiftingFn.fit()
RbfLiftingFn.fit_transform()
RbfLiftingFn.get_feature_names_in()
RbfLiftingFn.get_feature_names_out()
RbfLiftingFn.get_metadata_routing()
RbfLiftingFn.get_params()
RbfLiftingFn.inverse_transform()
RbfLiftingFn.lift()
RbfLiftingFn.lift_input()
RbfLiftingFn.lift_state()
RbfLiftingFn.n_samples_in()
RbfLiftingFn.plot_lifted_trajectory()
RbfLiftingFn.retract()
RbfLiftingFn.retract_input()
RbfLiftingFn.retract_state()
RbfLiftingFn.set_fit_request()
RbfLiftingFn.set_output()
RbfLiftingFn.set_params()
RbfLiftingFn.transform()
- pykoop.SkLearnLiftingFn
SkLearnLiftingFn
SkLearnLiftingFn.transformer_
SkLearnLiftingFn.n_features_in_
SkLearnLiftingFn.n_states_in_
SkLearnLiftingFn.n_inputs_in_
SkLearnLiftingFn.n_features_out_
SkLearnLiftingFn.n_states_out_
SkLearnLiftingFn.n_inputs_out_
SkLearnLiftingFn.min_samples_
SkLearnLiftingFn.episode_feature_
SkLearnLiftingFn.feature_names_in_
SkLearnLiftingFn.__init__()
SkLearnLiftingFn.fit()
SkLearnLiftingFn.fit_transform()
SkLearnLiftingFn.get_feature_names_in()
SkLearnLiftingFn.get_feature_names_out()
SkLearnLiftingFn.get_metadata_routing()
SkLearnLiftingFn.get_params()
SkLearnLiftingFn.inverse_transform()
SkLearnLiftingFn.lift()
SkLearnLiftingFn.lift_input()
SkLearnLiftingFn.lift_state()
SkLearnLiftingFn.n_samples_in()
SkLearnLiftingFn.plot_lifted_trajectory()
SkLearnLiftingFn.retract()
SkLearnLiftingFn.retract_input()
SkLearnLiftingFn.retract_state()
SkLearnLiftingFn.set_fit_request()
SkLearnLiftingFn.set_output()
SkLearnLiftingFn.set_params()
SkLearnLiftingFn.transform()
- pykoop.BilinearInputLiftingFn
- Regressors
- pykoop.Dmd
Dmd
Dmd.eigenvalues_
Dmd.modes_
Dmd.tsvd_
Dmd.n_features_in_
Dmd.n_states_in_
Dmd.n_inputs_in_
Dmd.episode_feature_
Dmd.feature_names_in_
Dmd.coef_
Dmd.__init__()
Dmd.fit()
Dmd.frequency_response()
Dmd.get_metadata_routing()
Dmd.get_params()
Dmd.plot_bode()
Dmd.plot_eigenvalues()
Dmd.plot_koopman_matrix()
Dmd.plot_svd()
Dmd.predict()
Dmd.score()
Dmd.set_fit_request()
Dmd.set_params()
Dmd.set_score_request()
- pykoop.Dmdc
Dmdc
Dmdc.eigenvalues_
Dmdc.modes_
Dmdc.B_tilde_
Dmdc.tsvd_unshifted_
Dmdc.tsvd_shifted_
Dmdc.n_features_in_
Dmdc.n_states_in_
Dmdc.n_inputs_in_
Dmdc.episode_feature_
Dmdc.feature_names_in_
Dmdc.coef_
Dmdc.__init__()
Dmdc.fit()
Dmdc.frequency_response()
Dmdc.get_metadata_routing()
Dmdc.get_params()
Dmdc.plot_bode()
Dmdc.plot_eigenvalues()
Dmdc.plot_koopman_matrix()
Dmdc.plot_svd()
Dmdc.predict()
Dmdc.score()
Dmdc.set_fit_request()
Dmdc.set_params()
Dmdc.set_score_request()
- pykoop.Edmd
Edmd
Edmd.n_features_in_
Edmd.n_states_in_
Edmd.n_inputs_in_
Edmd.episode_feature_
Edmd.feature_names_in_
Edmd.coef_
Edmd.__init__()
Edmd.fit()
Edmd.frequency_response()
Edmd.get_metadata_routing()
Edmd.get_params()
Edmd.plot_bode()
Edmd.plot_eigenvalues()
Edmd.plot_koopman_matrix()
Edmd.plot_svd()
Edmd.predict()
Edmd.score()
Edmd.set_fit_request()
Edmd.set_params()
Edmd.set_score_request()
- pykoop.EdmdMeta
EdmdMeta
EdmdMeta.n_features_in_
EdmdMeta.n_states_in_
EdmdMeta.n_inputs_in_
EdmdMeta.episode_feature_
EdmdMeta.feature_names_in_
EdmdMeta.regressor_
EdmdMeta.coef_
EdmdMeta.__init__()
EdmdMeta.fit()
EdmdMeta.frequency_response()
EdmdMeta.get_metadata_routing()
EdmdMeta.get_params()
EdmdMeta.plot_bode()
EdmdMeta.plot_eigenvalues()
EdmdMeta.plot_koopman_matrix()
EdmdMeta.plot_svd()
EdmdMeta.predict()
EdmdMeta.score()
EdmdMeta.set_fit_request()
EdmdMeta.set_params()
EdmdMeta.set_score_request()
- pykoop.DataRegressor
DataRegressor
DataRegressor.n_features_in_
DataRegressor.n_states_in_
DataRegressor.n_inputs_in_
DataRegressor.episode_feature_
DataRegressor.feature_names_in_
DataRegressor.coef_
DataRegressor.__init__()
DataRegressor.fit()
DataRegressor.frequency_response()
DataRegressor.get_metadata_routing()
DataRegressor.get_params()
DataRegressor.plot_bode()
DataRegressor.plot_eigenvalues()
DataRegressor.plot_koopman_matrix()
DataRegressor.plot_svd()
DataRegressor.predict()
DataRegressor.score()
DataRegressor.set_fit_request()
DataRegressor.set_params()
DataRegressor.set_score_request()
- pykoop.Dmd
- Kernel approximation methods
- pykoop.RandomBinningKernelApprox
RandomBinningKernelApprox
RandomBinningKernelApprox.n_features_in_
RandomBinningKernelApprox.n_features_out_
RandomBinningKernelApprox.ddot_
RandomBinningKernelApprox.pitches_
RandomBinningKernelApprox.shifts_
RandomBinningKernelApprox.encoder_
RandomBinningKernelApprox.__init__()
RandomBinningKernelApprox.fit()
RandomBinningKernelApprox.fit_transform()
RandomBinningKernelApprox.get_metadata_routing()
RandomBinningKernelApprox.get_params()
RandomBinningKernelApprox.set_output()
RandomBinningKernelApprox.set_params()
RandomBinningKernelApprox.transform()
- pykoop.RandomFourierKernelApprox
RandomFourierKernelApprox
RandomFourierKernelApprox.n_features_in_
RandomFourierKernelApprox.n_features_out_
RandomFourierKernelApprox.ift_
RandomFourierKernelApprox.random_weights_
RandomFourierKernelApprox.random_offsets_
RandomFourierKernelApprox.__init__()
RandomFourierKernelApprox.fit()
RandomFourierKernelApprox.fit_transform()
RandomFourierKernelApprox.get_metadata_routing()
RandomFourierKernelApprox.get_params()
RandomFourierKernelApprox.set_output()
RandomFourierKernelApprox.set_params()
RandomFourierKernelApprox.transform()
- pykoop.RandomBinningKernelApprox
- Radial basis function centers
- pykoop.ClusterCenters
- pykoop.DataCenters
- pykoop.GaussianRandomCenters
GaussianRandomCenters
GaussianRandomCenters.centers_
GaussianRandomCenters.n_centers_
GaussianRandomCenters.n_features_in_
GaussianRandomCenters.mean_
GaussianRandomCenters.cov_
GaussianRandomCenters.__init__()
GaussianRandomCenters.fit()
GaussianRandomCenters.get_metadata_routing()
GaussianRandomCenters.get_params()
GaussianRandomCenters.set_params()
- pykoop.GaussianMixtureRandomCenters
GaussianMixtureRandomCenters
GaussianMixtureRandomCenters.centers_
GaussianMixtureRandomCenters.n_centers_
GaussianMixtureRandomCenters.n_features_in_
GaussianMixtureRandomCenters.estimator_
GaussianMixtureRandomCenters.__init__()
GaussianMixtureRandomCenters.fit()
GaussianMixtureRandomCenters.get_metadata_routing()
GaussianMixtureRandomCenters.get_params()
GaussianMixtureRandomCenters.set_params()
- pykoop.GridCenters
- pykoop.QmcCenters
- pykoop.UniformRandomCenters
UniformRandomCenters
UniformRandomCenters.centers_
UniformRandomCenters.n_centers_
UniformRandomCenters.n_features_in_
UniformRandomCenters.range_max_
UniformRandomCenters.range_min_
UniformRandomCenters.__init__()
UniformRandomCenters.fit()
UniformRandomCenters.get_metadata_routing()
UniformRandomCenters.get_params()
UniformRandomCenters.set_params()
- Truncated SVD
- Utilities
- pykoop.AnglePreprocessor
AnglePreprocessor
AnglePreprocessor.angles_in_
AnglePreprocessor.lin_out_
AnglePreprocessor.cos_out_
AnglePreprocessor.sin_out_
AnglePreprocessor.n_features_in_
AnglePreprocessor.n_states_in_
AnglePreprocessor.n_inputs_in_
AnglePreprocessor.n_features_out_
AnglePreprocessor.n_states_out_
AnglePreprocessor.n_inputs_out_
AnglePreprocessor.min_samples_
AnglePreprocessor.episode_feature_
AnglePreprocessor.feature_names_in_
AnglePreprocessor.__init__()
AnglePreprocessor.fit()
AnglePreprocessor.fit_transform()
AnglePreprocessor.get_feature_names_in()
AnglePreprocessor.get_feature_names_out()
AnglePreprocessor.get_metadata_routing()
AnglePreprocessor.get_params()
AnglePreprocessor.inverse_transform()
AnglePreprocessor.lift()
AnglePreprocessor.lift_input()
AnglePreprocessor.lift_state()
AnglePreprocessor.n_samples_in()
AnglePreprocessor.plot_lifted_trajectory()
AnglePreprocessor.retract()
AnglePreprocessor.retract_input()
AnglePreprocessor.retract_state()
AnglePreprocessor.set_fit_request()
AnglePreprocessor.set_output()
AnglePreprocessor.set_params()
AnglePreprocessor.transform()
- pykoop.example_data_duffing
- pykoop.example_data_msd
- pykoop.example_data_pendulum
- pykoop.example_data_vdp
- pykoop.random_input
- pykoop.random_state
- pykoop.AnglePreprocessor
- LMI regressors
- pykoop.lmi_regressors.LmiEdmd
LmiEdmd
LmiEdmd.alpha_tikhonov_
LmiEdmd.alpha_other_
LmiEdmd.tsvd_
LmiEdmd.solver_params_
LmiEdmd.n_features_in_
LmiEdmd.n_states_in_
LmiEdmd.n_inputs_in_
LmiEdmd.episode_feature_
LmiEdmd.feature_names_in_
LmiEdmd.coef_
LmiEdmd.__init__()
LmiEdmd.fit()
LmiEdmd.frequency_response()
LmiEdmd.get_metadata_routing()
LmiEdmd.get_params()
LmiEdmd.plot_bode()
LmiEdmd.plot_eigenvalues()
LmiEdmd.plot_koopman_matrix()
LmiEdmd.plot_svd()
LmiEdmd.predict()
LmiEdmd.score()
LmiEdmd.set_fit_request()
LmiEdmd.set_params()
LmiEdmd.set_score_request()
- pykoop.lmi_regressors.LmiEdmdDissipativityConstr
LmiEdmdDissipativityConstr
LmiEdmdDissipativityConstr.tsvd_
LmiEdmdDissipativityConstr.objective_log_
LmiEdmdDissipativityConstr.stop_reason_
LmiEdmdDissipativityConstr.n_iter_
LmiEdmdDissipativityConstr.solver_params_
LmiEdmdDissipativityConstr.n_features_in_
LmiEdmdDissipativityConstr.n_states_in_
LmiEdmdDissipativityConstr.n_inputs_in_
LmiEdmdDissipativityConstr.episode_feature_
LmiEdmdDissipativityConstr.feature_names_in_
LmiEdmdDissipativityConstr.coef_
LmiEdmdDissipativityConstr.__init__()
LmiEdmdDissipativityConstr.fit()
LmiEdmdDissipativityConstr.frequency_response()
LmiEdmdDissipativityConstr.get_metadata_routing()
LmiEdmdDissipativityConstr.get_params()
LmiEdmdDissipativityConstr.plot_bode()
LmiEdmdDissipativityConstr.plot_eigenvalues()
LmiEdmdDissipativityConstr.plot_koopman_matrix()
LmiEdmdDissipativityConstr.plot_svd()
LmiEdmdDissipativityConstr.predict()
LmiEdmdDissipativityConstr.score()
LmiEdmdDissipativityConstr.set_fit_request()
LmiEdmdDissipativityConstr.set_params()
LmiEdmdDissipativityConstr.set_score_request()
- pykoop.lmi_regressors.LmiEdmdHinfReg
LmiEdmdHinfReg
LmiEdmdHinfReg.tsvd_
LmiEdmdHinfReg.P_
LmiEdmdHinfReg.gamma_
LmiEdmdHinfReg.objective_log_
LmiEdmdHinfReg.stop_reason_
LmiEdmdHinfReg.n_iter_
LmiEdmdHinfReg.solver_params_
LmiEdmdHinfReg.n_features_in_
LmiEdmdHinfReg.n_states_in_
LmiEdmdHinfReg.n_inputs_in_
LmiEdmdHinfReg.episode_feature_
LmiEdmdHinfReg.feature_names_in_
LmiEdmdHinfReg.coef_
LmiEdmdHinfReg.__init__()
LmiEdmdHinfReg.fit()
LmiEdmdHinfReg.frequency_response()
LmiEdmdHinfReg.get_metadata_routing()
LmiEdmdHinfReg.get_params()
LmiEdmdHinfReg.plot_bode()
LmiEdmdHinfReg.plot_eigenvalues()
LmiEdmdHinfReg.plot_koopman_matrix()
LmiEdmdHinfReg.plot_svd()
LmiEdmdHinfReg.predict()
LmiEdmdHinfReg.score()
LmiEdmdHinfReg.set_fit_request()
LmiEdmdHinfReg.set_params()
LmiEdmdHinfReg.set_score_request()
- pykoop.lmi_regressors.LmiEdmdSpectralRadiusConstr
LmiEdmdSpectralRadiusConstr
LmiEdmdSpectralRadiusConstr.tsvd_
LmiEdmdSpectralRadiusConstr.P_
LmiEdmdSpectralRadiusConstr.objective_log_
LmiEdmdSpectralRadiusConstr.stop_reason_
LmiEdmdSpectralRadiusConstr.n_iter_
LmiEdmdSpectralRadiusConstr.solver_params_
LmiEdmdSpectralRadiusConstr.n_features_in_
LmiEdmdSpectralRadiusConstr.n_states_in_
LmiEdmdSpectralRadiusConstr.n_inputs_in_
LmiEdmdSpectralRadiusConstr.episode_feature_
LmiEdmdSpectralRadiusConstr.feature_names_in_
LmiEdmdSpectralRadiusConstr.coef_
LmiEdmdSpectralRadiusConstr.__init__()
LmiEdmdSpectralRadiusConstr.fit()
LmiEdmdSpectralRadiusConstr.frequency_response()
LmiEdmdSpectralRadiusConstr.get_metadata_routing()
LmiEdmdSpectralRadiusConstr.get_params()
LmiEdmdSpectralRadiusConstr.plot_bode()
LmiEdmdSpectralRadiusConstr.plot_eigenvalues()
LmiEdmdSpectralRadiusConstr.plot_koopman_matrix()
LmiEdmdSpectralRadiusConstr.plot_svd()
LmiEdmdSpectralRadiusConstr.predict()
LmiEdmdSpectralRadiusConstr.score()
LmiEdmdSpectralRadiusConstr.set_fit_request()
LmiEdmdSpectralRadiusConstr.set_params()
LmiEdmdSpectralRadiusConstr.set_score_request()
- pykoop.lmi_regressors.LmiDmdc
LmiDmdc
LmiDmdc.alpha_tikhonov_
LmiDmdc.alpha_other_
LmiDmdc.tsvd_unshifted_
LmiDmdc.tsvd_shifted_
LmiDmdc.U_hat_
LmiDmdc.solver_params_
LmiDmdc.n_features_in_
LmiDmdc.n_states_in_
LmiDmdc.n_inputs_in_
LmiDmdc.episode_feature_
LmiDmdc.feature_names_in_
LmiDmdc.coef_
LmiDmdc.__init__()
LmiDmdc.fit()
LmiDmdc.frequency_response()
LmiDmdc.get_metadata_routing()
LmiDmdc.get_params()
LmiDmdc.plot_bode()
LmiDmdc.plot_eigenvalues()
LmiDmdc.plot_koopman_matrix()
LmiDmdc.plot_svd()
LmiDmdc.predict()
LmiDmdc.score()
LmiDmdc.set_fit_request()
LmiDmdc.set_params()
LmiDmdc.set_score_request()
- pykoop.lmi_regressors.LmiDmdcHinfReg
LmiDmdcHinfReg
LmiDmdcHinfReg.tsvd_unshifted_
LmiDmdcHinfReg.tsvd_shifted_
LmiDmdcHinfReg.U_hat_
LmiDmdcHinfReg.P_
LmiDmdcHinfReg.gamma_
LmiDmdcHinfReg.objective_log_
LmiDmdcHinfReg.stop_reason_
LmiDmdcHinfReg.n_iter_
LmiDmdcHinfReg.solver_params_
LmiDmdcHinfReg.n_features_in_
LmiDmdcHinfReg.n_states_in_
LmiDmdcHinfReg.n_inputs_in_
LmiDmdcHinfReg.episode_feature_
LmiDmdcHinfReg.feature_names_in_
LmiDmdcHinfReg.coef_
LmiDmdcHinfReg.__init__()
LmiDmdcHinfReg.fit()
LmiDmdcHinfReg.frequency_response()
LmiDmdcHinfReg.get_metadata_routing()
LmiDmdcHinfReg.get_params()
LmiDmdcHinfReg.plot_bode()
LmiDmdcHinfReg.plot_eigenvalues()
LmiDmdcHinfReg.plot_koopman_matrix()
LmiDmdcHinfReg.plot_svd()
LmiDmdcHinfReg.predict()
LmiDmdcHinfReg.score()
LmiDmdcHinfReg.set_fit_request()
LmiDmdcHinfReg.set_params()
LmiDmdcHinfReg.set_score_request()
- pykoop.lmi_regressors.LmiDmdcSpectralRadiusConstr
LmiDmdcSpectralRadiusConstr
LmiDmdcSpectralRadiusConstr.tsvd_unshifted_
LmiDmdcSpectralRadiusConstr.tsvd_shifted_
LmiDmdcSpectralRadiusConstr.U_hat_
LmiDmdcSpectralRadiusConstr.P_
LmiDmdcSpectralRadiusConstr.objective_log_
LmiDmdcSpectralRadiusConstr.stop_reason_
LmiDmdcSpectralRadiusConstr.n_iter_
LmiDmdcSpectralRadiusConstr.solver_params_
LmiDmdcSpectralRadiusConstr.n_features_in_
LmiDmdcSpectralRadiusConstr.n_states_in_
LmiDmdcSpectralRadiusConstr.n_inputs_in_
LmiDmdcSpectralRadiusConstr.episode_feature_
LmiDmdcSpectralRadiusConstr.feature_names_in_
LmiDmdcSpectralRadiusConstr.coef_
LmiDmdcSpectralRadiusConstr.__init__()
LmiDmdcSpectralRadiusConstr.fit()
LmiDmdcSpectralRadiusConstr.frequency_response()
LmiDmdcSpectralRadiusConstr.get_metadata_routing()
LmiDmdcSpectralRadiusConstr.get_params()
LmiDmdcSpectralRadiusConstr.plot_bode()
LmiDmdcSpectralRadiusConstr.plot_eigenvalues()
LmiDmdcSpectralRadiusConstr.plot_koopman_matrix()
LmiDmdcSpectralRadiusConstr.plot_svd()
LmiDmdcSpectralRadiusConstr.predict()
LmiDmdcSpectralRadiusConstr.score()
LmiDmdcSpectralRadiusConstr.set_fit_request()
LmiDmdcSpectralRadiusConstr.set_params()
LmiDmdcSpectralRadiusConstr.set_score_request()
- pykoop.lmi_regressors.LmiHinfZpkMeta
LmiHinfZpkMeta
LmiHinfZpkMeta.hinf_regressor_
LmiHinfZpkMeta.ss_ct_
LmiHinfZpkMeta.ss_dt_
LmiHinfZpkMeta.n_features_in_
LmiHinfZpkMeta.n_states_in_
LmiHinfZpkMeta.n_inputs_in_
LmiHinfZpkMeta.episode_feature_
LmiHinfZpkMeta.feature_names_in_
LmiHinfZpkMeta.coef_
LmiHinfZpkMeta.__init__()
LmiHinfZpkMeta.fit()
LmiHinfZpkMeta.get_metadata_routing()
LmiHinfZpkMeta.get_params()
LmiHinfZpkMeta.predict()
LmiHinfZpkMeta.score()
LmiHinfZpkMeta.set_fit_request()
LmiHinfZpkMeta.set_params()
LmiHinfZpkMeta.set_score_request()
- pykoop.lmi_regressors.LmiEdmd
- Dynamic models
- Configuration
- Extending
pykoop
- pykoop.Centers
- pykoop.EpisodeDependentLiftingFn
EpisodeDependentLiftingFn
EpisodeDependentLiftingFn.n_features_in_
EpisodeDependentLiftingFn.n_states_in_
EpisodeDependentLiftingFn.n_inputs_in_
EpisodeDependentLiftingFn.n_features_out_
EpisodeDependentLiftingFn.n_states_out_
EpisodeDependentLiftingFn.n_inputs_out_
EpisodeDependentLiftingFn.min_samples_
EpisodeDependentLiftingFn.episode_feature_
EpisodeDependentLiftingFn.feature_names_in_
EpisodeDependentLiftingFn.__init__()
EpisodeDependentLiftingFn.fit()
EpisodeDependentLiftingFn.fit_transform()
EpisodeDependentLiftingFn.get_feature_names_in()
EpisodeDependentLiftingFn.get_feature_names_out()
EpisodeDependentLiftingFn.get_metadata_routing()
EpisodeDependentLiftingFn.get_params()
EpisodeDependentLiftingFn.inverse_transform()
EpisodeDependentLiftingFn.lift()
EpisodeDependentLiftingFn.lift_input()
EpisodeDependentLiftingFn.lift_state()
EpisodeDependentLiftingFn.n_samples_in()
EpisodeDependentLiftingFn.plot_lifted_trajectory()
EpisodeDependentLiftingFn.retract()
EpisodeDependentLiftingFn.retract_input()
EpisodeDependentLiftingFn.retract_state()
EpisodeDependentLiftingFn.set_fit_request()
EpisodeDependentLiftingFn.set_output()
EpisodeDependentLiftingFn.set_params()
EpisodeDependentLiftingFn.transform()
- pykoop.EpisodeIndependentLiftingFn
EpisodeIndependentLiftingFn
EpisodeIndependentLiftingFn.n_features_in_
EpisodeIndependentLiftingFn.n_states_in_
EpisodeIndependentLiftingFn.n_inputs_in_
EpisodeIndependentLiftingFn.n_features_out_
EpisodeIndependentLiftingFn.n_states_out_
EpisodeIndependentLiftingFn.n_inputs_out_
EpisodeIndependentLiftingFn.min_samples_
EpisodeIndependentLiftingFn.episode_feature_
EpisodeIndependentLiftingFn.feature_names_in_
EpisodeIndependentLiftingFn.__init__()
EpisodeIndependentLiftingFn.fit()
EpisodeIndependentLiftingFn.fit_transform()
EpisodeIndependentLiftingFn.get_feature_names_in()
EpisodeIndependentLiftingFn.get_feature_names_out()
EpisodeIndependentLiftingFn.get_metadata_routing()
EpisodeIndependentLiftingFn.get_params()
EpisodeIndependentLiftingFn.inverse_transform()
EpisodeIndependentLiftingFn.lift()
EpisodeIndependentLiftingFn.lift_input()
EpisodeIndependentLiftingFn.lift_state()
EpisodeIndependentLiftingFn.n_samples_in()
EpisodeIndependentLiftingFn.plot_lifted_trajectory()
EpisodeIndependentLiftingFn.retract()
EpisodeIndependentLiftingFn.retract_input()
EpisodeIndependentLiftingFn.retract_state()
EpisodeIndependentLiftingFn.set_fit_request()
EpisodeIndependentLiftingFn.set_output()
EpisodeIndependentLiftingFn.set_params()
EpisodeIndependentLiftingFn.transform()
- pykoop.KernelApproximation
KernelApproximation
KernelApproximation.n_features_in_
KernelApproximation.n_features_out_
KernelApproximation.__init__()
KernelApproximation.fit()
KernelApproximation.fit_transform()
KernelApproximation.get_metadata_routing()
KernelApproximation.get_params()
KernelApproximation.set_output()
KernelApproximation.set_params()
KernelApproximation.transform()
- pykoop.KoopmanLiftingFn
KoopmanLiftingFn
KoopmanLiftingFn.n_features_in_
KoopmanLiftingFn.n_states_in_
KoopmanLiftingFn.n_inputs_in_
KoopmanLiftingFn.n_features_out_
KoopmanLiftingFn.n_states_out_
KoopmanLiftingFn.n_inputs_out_
KoopmanLiftingFn.min_samples_
KoopmanLiftingFn.episode_feature_
KoopmanLiftingFn.feature_names_in_
KoopmanLiftingFn.__init__()
KoopmanLiftingFn.fit()
KoopmanLiftingFn.fit_transform()
KoopmanLiftingFn.get_feature_names_in()
KoopmanLiftingFn.get_feature_names_out()
KoopmanLiftingFn.get_metadata_routing()
KoopmanLiftingFn.get_params()
KoopmanLiftingFn.inverse_transform()
KoopmanLiftingFn.lift()
KoopmanLiftingFn.lift_input()
KoopmanLiftingFn.lift_state()
KoopmanLiftingFn.n_samples_in()
KoopmanLiftingFn.plot_lifted_trajectory()
KoopmanLiftingFn.retract()
KoopmanLiftingFn.retract_input()
KoopmanLiftingFn.retract_state()
KoopmanLiftingFn.set_fit_request()
KoopmanLiftingFn.set_output()
KoopmanLiftingFn.set_params()
KoopmanLiftingFn.transform()
- pykoop.KoopmanRegressor
KoopmanRegressor
KoopmanRegressor.n_features_in_
KoopmanRegressor.n_states_in_
KoopmanRegressor.n_inputs_in_
KoopmanRegressor.episode_feature_
KoopmanRegressor.coef_
KoopmanRegressor.feature_names_in_
KoopmanRegressor.__init__()
KoopmanRegressor.fit()
KoopmanRegressor.frequency_response()
KoopmanRegressor.get_metadata_routing()
KoopmanRegressor.get_params()
KoopmanRegressor.plot_bode()
KoopmanRegressor.plot_eigenvalues()
KoopmanRegressor.plot_koopman_matrix()
KoopmanRegressor.plot_svd()
KoopmanRegressor.predict()
KoopmanRegressor.score()
KoopmanRegressor.set_fit_request()
KoopmanRegressor.set_params()
KoopmanRegressor.set_score_request()
- pykoop.dynamic_models.ContinuousDynamicModel
- pykoop.dynamic_models.DiscreteDynamicModel
- pykoop.lmi_regressors.LmiRegressor
LmiRegressor
LmiRegressor.n_features_in_
LmiRegressor.n_states_in_
LmiRegressor.n_inputs_in_
LmiRegressor.episode_feature_
LmiRegressor.feature_names_in_
LmiRegressor.coef_
LmiRegressor.__init__()
LmiRegressor.fit()
LmiRegressor.frequency_response()
LmiRegressor.get_metadata_routing()
LmiRegressor.get_params()
LmiRegressor.plot_bode()
LmiRegressor.plot_eigenvalues()
LmiRegressor.plot_koopman_matrix()
LmiRegressor.plot_svd()
LmiRegressor.predict()
LmiRegressor.score()
LmiRegressor.set_fit_request()
LmiRegressor.set_params()
LmiRegressor.set_score_request()
- Examples
- References