Skip to content

Commit

Permalink
New processes for random forest #295
Browse files Browse the repository at this point in the history
  • Loading branch information
m-mohr committed Nov 18, 2021
1 parent e293cda commit 761b147
Show file tree
Hide file tree
Showing 4 changed files with 122 additions and 0 deletions.
6 changes: 6 additions & 0 deletions meta/subtype-schemas.json
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,12 @@
}
}
},
"ml-model": {
"type": "object",
"subtype": "ml-model",
"title": "Machine Learning Model",
"description": "A machine learning model accompanied with STAC metadata, including the ml-model extension."
},
"output-format": {
"type": "string",
"subtype": "output-format",
Expand Down
76 changes: 76 additions & 0 deletions proposals/fit_regr_random_forest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
{
"id": "fit_regr_random_forest",
"summary": "Train a random forest regression model",
"description": "Executes the fit of a random forest regression based on the user input of target and predictors. The Random Forest regression model is based on the approach by Breiman (2001).",
"categories": [
"machine learning"
],
"experimental": true,
"parameters": [
{
"name": "data",
"description": "The input data for the regression model. The raster images that will be used as predictors for the Random Forest. Aggregated to the features (vectors) of the target input variable.",
"schema": {
"type": "object",
"subtype": "raster-cube"
}
},
{
"name": "target",
"description": "The input data for the regression model. This will be vector cubes for each training site. This is associated with the target variable for the Random Forest Model. The Geometry has to associated with a value to predict (e.g. fractional forest canopy cover).",
"schema": {
"type": "object",
"subtype": "vector-cube"
}
},
{
"name": "training",
"description": "The amount of training data to be used in the regression. The sampling will be randomly through the data object. The remaining data will be used as test data for the validation.",
"schema": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100
}
},
{
"name": "num_trees",
"description": "The number of trees build within the Random Forest regression.",
"optional": true,
"default": 100,
"schema": {
"type": "integer",
"minimum": 1
}
},
{
"name": "mtry",
"description": "Specifies how many split variables will be used at a node. Default value is `null`, which corresponds to the number of predictors divided by 3.",
"optional": true,
"default": null,
"schema": [
{
"type": "integer",
"minimum": 1
},
{
"type": "null"
}
]
}
],
"returns": {
"description": "A model object that can be saved with ``save_ml_model()`` and restored with ``load_ml_model()``.",
"schema": {
"type": "object",
"subtype": "ml-model"
}
},
"links": [
{
"href": "https://doi.org/10.1023/A:1010933404324",
"title": "Breiman (2001): Random Forests",
"type": "text/html",
"rel": "about"
}
]
}
39 changes: 39 additions & 0 deletions proposals/predict_random_forest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"id": "predict_random_forest",
"summary": "Predict values from a Random Forest model",
"description": "Applies a Random Forest Model to a raster cube objects. The raster data cube necessarily needs the same bands as the predictors in the model. Otherwise, an `IncompatibleBands` must be returned.",
"categories": [
"machine learning"
],
"experimental": true,
"parameters": [
{
"name": "data",
"description": "A raster cube with the bands corresponding to the predictors.",
"schema": {
"type": "object",
"subtype": "raster-cube"
}
},
{
"name": "model",
"description": "A model object that can be trained with the ``fit_regr_random_forest()`` process.",
"schema": {
"type": "object",
"subtype": "ml-model"
}
}
],
"returns": {
"description": "A raster data cube with the prediction of the target variable based on the model.",
"schema": {
"type": "object",
"subtype": "raster-cube"
}
},
"exceptions": {
"IncompatibleBands": {
"message": "The bands provided do not match the bands that the model has been trained for."
}
}
}
1 change: 1 addition & 0 deletions tests/.words
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,4 @@ gdalwarp
Lanczos
sinc
interpolants
Breiman

0 comments on commit 761b147

Please sign in to comment.