Повышение набора данных MNIST - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь применить Gradient Boosting к набору данных MNIST. Это мой код:

library(dplyr)
library(caret)
mnist <- snedata::download_mnist()
mnist_num <- as.data.frame(lapply(mnist[1:10000,], as.numeric)) %>%
mutate(id = row_number())
mnist_num <- mnist_num[,sapply(mnist_num, function(x){max(x) - min(x) > 0})]

mnist_train <- sample_frac(mnist_num, .70)
mnist_test <- anti_join(mnist_num, mnist_train, by = 'id')

set.seed(5000)
library(gbm)
boost_mnist<-gbm(Label~ .,data=mnist_train, distribution="bernoulli", n.trees=70, 
interaction.depth=4, shrinkage=0.3)

Он показывает следующую ошибку:

"Ошибка в gbm.fit (x = x, y = y, offset = offset, distribution = distribution,: Бернулли требует, чтобы ответ был в {0,1} "

Что здесь не так? Может ли кто-нибудь показать мне код, чтобы сделать это правильно?

1 Ответ

0 голосов
/ 28 мая 2020

Ошибка

Error in gbm.fit(x = x, y = y, offset = offset, distribution = distribution, : Bernoulli requires the response to be in {0,1}

связана с выбором дистрибутива, вы должны выбрать multinomial вместо bernoulli, потому что распределение Бернулли работает только с дихотомическим ответом, а mnist метка идет от 1 до 10.

...