{"id":15871023,"url":"https://github.com/sgreben/caretstack","last_synced_at":"2025-04-01T22:25:31.497Z","repository":{"id":80988902,"uuid":"99603429","full_name":"sgreben/caretStack","owner":"sgreben","description":"R package for stacking caret models","archived":false,"fork":false,"pushed_at":"2017-08-14T14:15:12.000Z","size":8,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-07T14:40:08.213Z","etag":null,"topics":["caret","ensemble-learning","machine-learning","r","stacking"],"latest_commit_sha":null,"homepage":null,"language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sgreben.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-07T17:35:50.000Z","updated_at":"2019-11-13T01:17:11.000Z","dependencies_parsed_at":"2023-03-12T12:57:18.627Z","dependency_job_id":null,"html_url":"https://github.com/sgreben/caretStack","commit_stats":{"total_commits":8,"total_committers":2,"mean_commits":4.0,"dds":0.375,"last_synced_commit":"20111904d421a3aee626495df866c15cafe5cc29"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgreben%2FcaretStack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgreben%2FcaretStack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgreben%2FcaretStack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sgreben%2FcaretStack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sgreben","download_url":"https://codeload.github.com/sgreben/caretStack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246719652,"owners_count":20822784,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["caret","ensemble-learning","machine-learning","r","stacking"],"created_at":"2024-10-06T00:41:27.650Z","updated_at":"2025-04-01T22:25:31.478Z","avatar_url":"https://github.com/sgreben.png","language":"R","readme":"# caretStack\n\nA small library to train stacked models using `caret::train`.\n\nYou give it a list of layers (each layer is a list of models) and it trains either a\n\n- restacked (each layer uses all lower layers) or \n- non-restacked (each layer uses only the previous layer)\n\nmodel.\n\n## Installation\n\n```R\ndevtools::install_github(\"sgreben/caretStack\")\n```\n\n## Usage\n\n```R\n# Train\nmodel \u003c- caretStack::trainStack(x, y, layers, folds, verbose = T)\n\n# Train (without re-stacking)\nmodlel2 \u003c- caretStack::trainStackNoRestack(x, y, layers, folds, verbose = T)\n\n# Predict\nyHat \u003c- caretStack::predictStack(model, x)\n``` \n\nThe structure of a layers spec is as follows:\n\n```R\nlayers \u003c- list(\n    list( # First layer\n        modelName = list(\n            parallel = NULL, # or an int = number of cores\n            params = list (\n                # params for caret::train\n            )\n        )\n    ),\n    list( # Second layer\n        # Second layer models\n    )\n)\n```\n\n## Example\n\nHere's a full example:\n\n```R\nlibrary(caret)\n\ngbm2 \u003c- list(\n  parallel = 4,\n  params = list(\n    method = \"gbm\",\n    tuneGrid = expand.grid(\n      n.trees = 300,\n      interaction.depth = 2,\n      shrinkage = 0.1,\n      n.minobsinnode = 10\n    ),\n    trControl = trainControl(method = \"none\")\n  )\n)\n\ngbm10 \u003c- list(\n  parallel = 4,\n  params = list(\n    method = \"gbm\",\n    tuneGrid = expand.grid(\n      n.trees = 300,\n      interaction.depth = 10,\n      shrinkage = 0.1,\n      n.minobsinnode = 10\n    ),\n    trControl = trainControl(method = \"none\")\n  )\n)\n\nxgb10 \u003c- list(\n  parallel = NULL,\n  params = list(\n    metric = \"RMSE\",\n    method = \"xgbTree\",\n    tuneGrid = data.frame(\n      nrounds = 100,\n      max_depth = 10,\n      eta = 0.07,\n      min_child_weight = 1.5,\n      colsample_bytree = 0.5,\n      subsample = 0.95,\n      gamma = 0.045\n    ),\n    trControl = trainControl(method = \"none\")\n  )\n)\n\nlayers \u003c- list(\n  list(\n    gbm2 = gbm2,\n    gbm10 = gbm10,\n    xgb10 = xgb10\n  ),\n  list(\n    xgb10 = xgb10\n  )\n)\n\ndata(BostonHousing)\nx \u003c- BostonHousing[,!(names(BostonHousing) %in% c(\"medv\"))]\nx$chas \u003c- ifelse(x$chas == \"1\", 1, 0)\ny \u003c- BostonHousing$medv\n\nfolds \u003c- caret::createFolds(y, 5)\nmodel \u003c- caretStack::trainStack(x, y, layers, folds, verbose = T)\n\nyHat \u003c- caretStack::predictStack(model, x)\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgreben%2Fcaretstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsgreben%2Fcaretstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsgreben%2Fcaretstack/lists"}