Configuration
This page documents the configuration schema consumed by SkyulfPipeline and FeatureEngineer (the skyulf-core library).
Running the full platform? See the Backend Configuration Reference for all
.env/ environment variable settings (database, security, Celery, uploads, etc.).
Pipeline config
SkyulfPipeline expects:
{
"preprocessing": [ ... ],
"modeling": { ... }
}
Preprocessing config
The preprocessing list is executed in order.
Each step is:
{
"name": "step_name",
"transformer": "TransformerType",
"params": { ... }
}
TransformerType is a string key resolved via the NodeRegistry.
For the full list and per-node parameters, see:
- Reference → Preprocessing Nodes
- Reference → API → Preprocessing → pipeline
Minimal examples
# Split to avoid leakage
{"name": "split", "transformer": "TrainTestSplitter", "params": {"test_size": 0.2, "random_state": 42, "target_column": "target"}}
# Impute missing numeric values
{"name": "impute", "transformer": "SimpleImputer", "params": {"strategy": "mean", "columns": ["age"]}}
# Encode categoricals
{"name": "encode", "transformer": "OneHotEncoder", "params": {"columns": ["city"], "drop_original": True, "handle_unknown": "ignore"}}
# Scale numeric columns
{"name": "scale", "transformer": "StandardScaler", "params": {"auto_detect": True}}
Modeling config
SkyulfPipeline supports the following model types via the NodeRegistry.
Classification (9 models)
| Key | Algorithm |
|---|---|
logistic_regression |
Logistic Regression |
random_forest_classifier |
Random Forest Classifier |
svc |
Support Vector Classifier |
k_neighbors_classifier |
K-Nearest Neighbors Classifier |
decision_tree_classifier |
Decision Tree Classifier |
gradient_boosting_classifier |
Gradient Boosting Classifier |
adaboost_classifier |
AdaBoost Classifier |
xgboost_classifier |
XGBoost Classifier (requires skyulf-core[modeling-xgboost]) |
gaussian_nb |
Gaussian Naive Bayes |
Regression (11 models)
| Key | Algorithm |
|---|---|
linear_regression |
Linear Regression |
ridge_regression |
Ridge Regression |
lasso_regression |
Lasso Regression |
elasticnet_regression |
ElasticNet Regression |
random_forest_regressor |
Random Forest Regressor |
svr |
Support Vector Regressor |
k_neighbors_regressor |
K-Nearest Neighbors Regressor |
decision_tree_regressor |
Decision Tree Regressor |
gradient_boosting_regressor |
Gradient Boosting Regressor |
adaboost_regressor |
AdaBoost Regressor |
xgboost_regressor |
XGBoost Regressor (requires skyulf-core[modeling-xgboost]) |
Meta
| Key | Purpose |
|---|---|
hyperparameter_tuner |
Wraps any model above with grid, random, Optuna, or halving search |
Example:
{
"type": "random_forest_classifier",
"node_id": "model_node",
"params": {
"n_estimators": 200,
"max_depth": 10
}
}
Tuner example:
{
"type": "hyperparameter_tuner",
"base_model": {"type": "logistic_regression"},
"strategy": "optuna",
"search_space": {"C": [0.1, 1.0, 10.0]},
"n_trials": 25,
"metric": "accuracy"
}
Reproducibility and seeds
Seeding has exactly one owner: skyulf.types.DEFAULT_RANDOM_STATE (currently
42). Every stochastic component (model fitting, CV folds, tuning search,
splitting, encoding cross-folds) falls back to it, so runs are reproducible
out of the box. Explicit configuration always wins, in this precedence order:
- Node params —
"params": {"random_state": 7}on a model/preprocessing node controls that node only. Pass"random_state": nullto opt out of seeding a specific estimator. - Tuner config —
random_stateandcv_random_stateon thehyperparameter_tunerconfig seed the search, the CV folds, and the final refit. DEFAULT_RANDOM_STATE— the shared fallback, injected at model construction.
Two exceptions, both fixed and reproducible:
- Iterative imputation defaults its seed to
0(sklearn's own default forIterativeImputer), not42. The canvas shows the seed in the imputation settings; set it to42if you want every node aligned. - Internal helpers (feature-selection importance estimators, target/WoE encoding CV folds, profiling analyzers) carry fixed seeds that are not user-configurable — they are implementation details, not pipeline choices.
# Pin one seed for the whole tuning run:
{
"type": "hyperparameter_tuner",
"base_model": {"type": "random_forest_classifier"},
"strategy": "random",
"search_space": {"n_estimators": [100, 200]},
"random_state": 123,
"cv_random_state": 123
}
Where to set seeds in the canvas (per node)
| Node | Control | Where in the UI | What it seeds |
|---|---|---|---|
| Train/Test Split | Random State | Split settings | Which rows go to train/test/validation |
| Classification, Regression, Text Classification (basic mode) | Random State | Hyperparameters → Customize | The model's own randomness (bootstrap sampling, tree splits, stochastic solvers, initialization) |
| Classification, Regression, Text Classification (advanced mode) | Random State | Tuning Strategy section | The tuning search and the final refit |
| Any training/ensemble node | Fold Split Seed | Cross Validation section | How rows are dealt to CV folds (only when shuffling is on) |
| Ensemble | Random State | Hyperparameter Tuning section | The ensemble tuning search and refit |
| Segmentation (K-Means, Mini-Batch K-Means, Gaussian Mixture) | Random State | Hyperparameters → Customize | Centroid/component initialization |
| Imputation (Iterative only) | Random State | Imputation settings (default 0) |
The iterative imputer's estimator |
| Resampling (over/undersampling) | Random State | Resampling settings | Synthetic sample generation / sampling |
Notes:
- Basic mode: the seed appears in the model's hyperparameter list once you
switch on Customize; leaving it untouched keeps the default
42. - Tuning never searches over seeds. The seed is a fixed control, not a search-space candidate — same seed + same data = identical tuning outcome.
- Models without a seed control are deterministic by construction: Linear Regression, K-Nearest Neighbors, Naive Bayes family, SVC/SVR, BIRCH.
- Ensemble base learners (voting/stacking) are seeded automatically at
construction; per-base-learner seeds can be supplied via
base_estimator_params(API) or by wiring in a model node with a customized Random State. - Opt-out: in a hand-written config,
"random_state": nullleaves that estimator unseeded (run-to-run variation). The canvas always sends a number.
See "Modeling Nodes" in Reference for details.