2013-08-15 9 views
8

Я использую полиномиальное распределение из gbm пакета в R. Когда я использую функцию predict, я получаю ряд значений:GBM многокомпонентное распространение, как использовать pred() для получения прогнозируемого класса?

5.086328 -4.738346 -8.492738 -5.980720 -4.351102 -4.738044 -3.220387 -4.732654 

, но я хочу, чтобы получить вероятность каждого класса происходит. Как восстановить вероятности? Спасибо.

+3

(Существует нет пакета «GBM». Случай с буквами важен в R.) Если вы не хотите создавать данные, то почему бы не создать код, который использует образцы данных со страниц справки? –

+0

Вы приняли ответ, который фактически был неверным в течение последних 3,5 лет. Я дал вам ответ, который действительно работает. – smci

ответ

1

Посмотрите на ?predict.gbm, вы увидите, что для функции есть параметр «type». Попробуйте predict(<gbm object>, <new data>, type="response").

+1

Нет, predict.gbm (..., type = "response") не реализовано для многочленов или даже для любого распределения, отличного от bernoulli или poisson. – smci

+1

Per @smci, в настоящее время последняя версия GBM 2.1.1 выпущена в мае 2015 года, а 'type =" response "' все еще не реализована. Однако предлагаемое использование smci использования «apply» ниже работает. – morten

9

predict.gbm(..., type='response') не применяется для многокомпонентного или любого другого распределения, кроме bernoulli или poisson.

Таким образом, вы должны найти наиболее вероятный класс (apply(.., 1, which.max) на вектор выхода из предсказания), а desertnaut wrote:

preds = predict(your_model, n.trees, newdata=...,type='response') 

pred_class <- apply(preds, 1, which.max) 

Просто написать обертку, которая принимает тип = «ответ» и возвращает это, когда это многочлена.