проверьте мой профиль на мою электронную почту и отправьте данные, если хотите, я постараюсь вам помочь.

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

Я замаскировал некоторые данные из соображений конфиденциальности.

Вот образец моих данных, гдеti переменная часов:

 $ y           : Factor w/ 2 levels "0","1": 1 2 1 1 2 2 1 2 2 1 ...
 $ geslacht    : Factor w/ 2 levels "Dhr.","Mevr.": 2 2 1 1 1 2 1 1 2 2 ...
 $ ti          : Factor w/ 12 levels "1","2","3","4",..: 12 12 5 8 9 1...
 $ provider    : Factor w/ 8 levels "1","2","3","4",..: 5 6 5 5 4 1 ...
 $ duur        : Factor w/ 2 levels "12","24": 2 2 2 2 2 2 2 2 2 2 ...
 $ pcn         : int  3xxx 2xxx 9xxx 5xxx 2xxx 1xxx ...
 $ prov        : Factor w/ 13 levels "1","2","3","4",..: 2 2 10 6 2 ...
 $ pm          : num  45 44 25 20 43 30 35 37 13.5 17.5 ...

Я запускаю следующий код:

cols<-c("y","geslacht","ti","provider","duur","prov")
for(i in cols){
  r_data[,i]=as.factor(r_data[,i])
}

Затем я извлекаю имена строк:

names_rows <- row.names(r_data)

Затем я запускаю следующую модель случайного леса в rstudio.

modelRandom = randomForest(y~ti+provider+pm+duur+geslacht+prov+pcn, data=r_data, mtry=4, ntree=30)

После этого я запускаю следующий код, чтобы подготовить данные для получения прогнозов в час.

n_row <- nrow(r_data)
newdata <- data.frame(r_data[rep(1:n_row, 12), 2:15], ti = rep(1:12, each =  n_row))

И затем я запускаю следующий код, чтобы получить прогнозы в час на наблюдение:

predictions <- data.frame(predict(modelRandom, newdata, type = 'prob'),
                    ti = rep(1:12, each = n_row),
                    names_rows = as.numeric(rep(names_rows, times = 12)))

наконец, я запускаю следующий код, чтобы получить прогнозы в таблице:

preds %>%
  select(X1, ti, names_rows) %>%
  group_by(ti)  %>%
  mutate(z = 1 :  n_row) %>%
  spread(ti, X1) %>%
  select(-z)

   names_rows        `1`        `2`        `3`        `4`        `5`        `6`        `7`        `8`        `9`       `10`       `11`       `12`
 *      <dbl>      <dbl>      <dbl>      <dbl>      <dbl>      <dbl>      <dbl>      <dbl>      <dbl>      <dbl>      <dbl>      <dbl>      <dbl>
 1          1 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
 2          2 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667
 3          3 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
 4          4 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
 5          5 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333
 6          6 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333 0.13333333
 7          7 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667
 8          8 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667 0.46666667
 9          9 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667 0.26666667
10         10 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000
# ... with 356,304 more rows

Как видите, каждый час имеет одинаковую вероятность. Где я делаю ошибку?

Ответы на вопрос(0)

Ваш ответ на вопрос