Классификация с помощью gbm () - ошибки

cancer <- read.csv('breast-cancer-wisconsin.data', header = FALSE, na.strings="?")
cancer <- cancer[complete.cases(cancer),]
names(cancer)[11] <- "class"
cancer[, 11] <- factor(cancer[, 11], labels = c("benign", "malignant"))
library(gbm)

Во-первых, я удаляю значения «NA», используя complete.cases, и делаю одиннадцатый столбец, «класс», в качестве фактора. Я хочу использовать «класс» в качестве переменной ответа и другие столбцы, кроме первого, в качестве переменных-предикторов.

С первой попытки я набрал:

boost.cancer <- gbm(class ~ .-V1, data = cancer, distribution = "bernoulli") 

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

Затем я использую контрасты класса вместо класса.

boost.cancer <- gbm(contrasts(class) ~ .-V1, distribution = "bernoulli", data = cancer)

Error in model.frame.default(formula = contrasts(class) ~ . - V1, data = cancer,  : 
variable lengths differ (found for 'V1')

Как мне исправить эти ошибки? Я уверен, что с моим методом что-то не так.


r gbm
person hans-t    schedule 02.06.2014    source источник


Ответы (2)


Как говорится в сообщении об ошибке, ваш ответ находится не в [0,1]. Вы можете сделать это вместо создания фактора:

> cancer$class <- (cancer$class -2)/2

> boost.cancer <- gbm(class ~ .-V1, data = cancer, distribution = "bernoulli")
> boost.cancer
gbm(formula = class ~ . - V1, distribution = "bernoulli", data = cancer)
A gradient boosted model with bernoulli loss function.
100 iterations were performed.
There were 9 predictors of which 4 had non-zero influence.
person Julián Urbano    schedule 02.06.2014

Вы также можете использовать:

boost.cancer ‹- gbm ((unclass (class) -1) ~.-V1, data = Cance, distribution =" bernoulli ") summary (boost.cancer)

Проделайте то же самое, выполняя функцию «прогнозирования» и определяя матрицу неточности с точностью.

person wackyanil    schedule 09.04.2017
comment
Пожалуйста, отформатируйте свои сообщения, используя Markdown или HTML. См. stackoverflow.com/help/formatting для получения дополнительной информации. - person 0xJoKe; 09.04.2017
comment
Спасибо. Я не знал об этом. - person wackyanil; 10.04.2017