Static models
A model type subtypes Static <: Unsupervised
if it does not generalize to new data but nevertheless has hyperparameters. See the Static transformers section of the MLJ manual for examples. In the Static
case, transform
can have multiple arguments and input_scitype
refers to the allowed scitype of the slurped data, even if there is only a single argument. For example, if the signature is transform(static_model, X1, X2)
, then the allowed input_scitype
might be Tuple{Table(Continuous), Table(Continuous)}
; if the signature is transform(static_model, X)
, the allowed input_scitype
might be Tuple{Table(Continuous)}
. The other traits are as for regular Unsupervised models.
Reporting byproducts of a static transformation
As a static transformer does not implement fit
, the usual mechanism for creating a report
is not available. Instead, byproducts of the computation performed by transform
can be returned by transform
itself by returning a pair (output
, report
) instead of just output
. Here report
should be a named tuple. In fact, any operation, (e.g., predict
) can do this for any model type. However, this exceptional behavior must be flagged with an appropriate trait declaration, as in
MLJModelInterface.reporting_operations(::Type{<:SomeModelType}) = (:transform,)
If mach
is a machine wrapping a model of this kind, then the report(mach)
will include the report
item form transform
's output. For sample implementations, see this issue or the code for DBSCAN clustering.