многие модели сгруппированы modelr :: add_predictions - PullRequest
0 голосов
/ 30 мая 2018

Я хотел бы использовать данные, помеченные как train, чтобы соответствовать модели, а затем использовать данные, помеченные как test, для прогнозирования новых значений.Я хотел бы сделать это в сценарии " много моделей ".

Ниже приведены мои текущие настройки.Моя проблема в том, что я тренируюсь и добавляю прогнозы ко всем данным.Я не знаю, как различить, используя modelr

library(modelr)
library(tidyverse)
library(gapminder)

# nest data by continent and label test/train data
nested_gap <- gapminder %>% 
  mutate(test_train = ifelse(year < 1992, "train", "test")) %>% 
  group_by(continent) %>% 
  nest()

# make a linear model function
cont_model <- function(df) {
  lm(lifeExp ~ year, data = df)
}

# fit a model and add predictions to all data
fitted_gap <- nested_gap %>% 
  mutate(model = map(data, cont_model)) %>% 
  mutate(pred  = map2(data, model, add_predictions))

1 Ответ

0 голосов
/ 30 мая 2018

Это решение, предоставленное @ shuckle

library(modelr)
library(tidyverse)
library(gapminder)

# nest data by continent and label test/train data
nested_gap <- gapminder %>% 
  mutate(test_train = ifelse(year < 1992, "train", "test")) %>% 
  group_by(continent) %>% 
  nest()

# make a linear model function than only trains on training set
cont_model <- function(df) {
  lm(lifeExp ~ year, data = df %>% filter(test_train == "train"))
}

# fit a model and add predictions to all data
fitted_gap <- nested_gap %>% 
  mutate(model = map(data, cont_model)) %>% 
  mutate(pred  = map2(data, model, add_predictions))

# unnest predictions and filter only the test rows
fitted_gap %>% 
  unnest(pred) %>% 
  filter(test_train == "test")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...