tpcp.make_optimize_safe#
- tpcp.make_optimize_safe(self_optimize_method: Callable[Concatenate[OptimizableT, P], OptimizableT]) Callable[Concatenate[OptimizableT, P], OptimizableT] [source]#
Apply a set of runtime checks to a custom
self_optimize
method to prevent implementation errors.The following things are checked:
The
self_optimize
method must returnself
(or at least an instance of the algorithm or pipeline).The
self_optimize
method must only modify input parameters of the pipeline and not any other attributes.The
self_optimize
method should modify at least one of the input parameters (this doesn’t raise an error, but just a warning).
In general, we recommend to just apply this decorator to all custom
self_optimize
methods. The runtime overhead is usually small enough to not make a difference.The only execption are custom pipelines that you only optimize using the
Optimize
wrapper. This wrapper will apply the same runtime checks anyway. However, it doesn’t hurt to apply it as decorator as well. We make sure that the cheks will still only be performed once.Examples
>>> from tpcp import Algorithm, make_optimize_safe >>> class MyAlgorithm(Algorithm): ... def __init__(self, para_1: int = 4): ... self.para_1 = para_1 ... ... @make_optimize_safe ... def self_optimize(self, train_data, **kwargs): ... # find a better value for para_1 based on the provided trainings data ... better_value_for_para_1 = 5 ... self.para_1 = better_value_for_para_1 ... return self
Examples using tpcp.make_optimize_safe
#
Algorithms - A real world example: QRS-Detection
The final QRS detection algorithms