R проблема с кодированием в диско-пакете - PullRequest
1 голос
/ 03 марта 2020

Я пытаюсь создать модель BRT, используя пакет dismo. Когда я упрощаю свою модель, следуя учебному пособию по крану, а затем пытаюсь изменить ее, я получаю сообщение об ошибке: «Ошибка в данных [, gbm.x, drop = FALSE]: неверное количество измерений».

I Я не уверен, в чем проблема, и любая помощь будет оценена.

> BRTsynoptic <- gbm.step(data=synoptic, gbm.x = 2:14,      gbm.y = 1,
 family = "bernoulli", tree.complexity = 10,
learning.rate = .001, bag.fraction = 0.75)
summary(BRTsynoptic)
#simplify the model
synoptic.simp <- gbm.simplify(BRTsynoptic, n.drops = 5)
#assign new model with simplification
synopticss.simp <- gbm.step(BRTsynoptic,
gbm.x=synoptic.simp$pred.list[[4]], gbm.y=1,
                               tree.complexity=10,learning.rate=0.001)

1 Ответ

0 голосов
/ 03 марта 2020

Если вы посмотрите на synopti c .simp $ final.drops, это фрейм данных. Ниже приведен воспроизводимый пример:

library(dismo)
data(Anguilla_train)
Anguilla_train = Anguilla_train[1:200,]

mdl <- gbm.step(data=Anguilla_train, gbm.x = 3:14, 
gbm.y = 2, family = "bernoulli",
tree.complexity = 10, learning.rate = 0.001, bag.fraction = 0.75)
train.simp <- gbm.simplify(mdl, n.drops = 5)

train.simp$final.drops
        preds order
1       DSDam     1
2  USRainDays     2
3     USSlope     3
4  SegLowFlow     4
5    SegTSeas     5
6     SegSumT    NA
7      DSDist    NA
8  DSMaxSlope    NA
9      USAvgT    NA
10   USNative    NA
11     Method    NA
12     LocSed    NA

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

var_names = with(train.simp$final.drops,preds[which(is.na(order))])
idx = match(var_names,colnames(Anguilla_train))

mdl.simp <- gbm.step(Anguilla_train,
gbm.x=idx, gbm.y=2,
tree.complexity=10,learning.rate=0.001)
...