In working on the Loikith example problem, I found some of the configuration of training in ensemble unnecessarily wordy and confusing. This PR aims to fix that by:
Better separating the config parsing logic from the machine learning logic
Making a Pipeline object similar to that of sklearn.pipeline. See:
elm.pipeline.pipeline: The Pipeline class
elm.pipeline.steps: All the classes representing steps that can be used in a Pipeline
How this Pipeline differs from that of sklearn.pipeline:
elm.pipeline.Pipeline allows passing / transform X, y and sample_weight data in each step, where X is an ElmStore or xarray.Dataset.
Where sklearn uses a FunctionTransformer as class for a user-given function that transforms X, we have elm.pipeline.steps.ModifySample. See its usage in elm.pipeline.tests.test_pipeline
In working on the Loikith example problem, I found some of the configuration of training in ensemble unnecessarily wordy and confusing. This PR aims to fix that by:
Pipeline
object similar to that ofsklearn.pipeline
. See:elm.pipeline.pipeline
: ThePipeline
classelm.pipeline.steps
: All the classes representing steps that can be used in aPipeline
How this
Pipeline
differs from that ofsklearn.pipeline
:elm.pipeline.Pipeline
allows passing / transformX
,y
andsample_weight
data in each step, whereX
is anElmStore
orxarray.Dataset
.sklearn
uses aFunctionTransformer
as class for a user-given function that transforms X, we haveelm.pipeline.steps.ModifySample
. See its usage inelm.pipeline.tests.test_pipeline