Add facility for adding a data front-end to a model implementation #76
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
A PR to support JuliaAI/MLJBase.jl#492.
Adds:
reformat
method/fallbackselectrows(model::Model, I, args...) -> data
fallbackFrom the new doc-strings (edited):
Models optionally overload
reformat
to define transformations ofuser-supplied data into some model-specific representation (e.g., from
a table to a matrix). When implemented, the MLJ user can avoid
repeating such transformations unnecessarily, and can additionally
make use of more efficient row subsampling, which is then based on the
model-specific representation of data, rather than the
user-representation. When
reformat
is overloaded,selectrows(::Model, ...)
must be as well (seeselectrows
). Furthermore, the modelfit
method(s), andoperations, such as
predict
andtransform
, must be refactored toact on the model-specific representions of the data.
To implement the
reformat
data front-end for a model, refer to"Implementing a data front-end" in the MLJ
manual.
A model overloads
selectrows
whenever it buys into the optionalreformat
front-end for data preprocessing. Seereformat
for details. The fallback assumes
data
is a tuple and callsselectrows(X, I)
for eachX
indata
, returning the results in anew tuple of the same length. This call makes sense when
X
is atable, abstract vector or abstract matrix. In the last two cases, a
new object and not a view is returned.