Почему функция boot возвращает значения других типов, чем те, которые указаны в statisti c, используемом внутри boot? - PullRequest
0 голосов
/ 06 марта 2020

Я использую метод классификации Дерево мешков (Bootstrap Агрегация) и сравните эту ошибку ошибочной классификации с одним из одного отдельного дерева.

Это странно для меня, потому что функция estim.pred возвращает матрицу факторов, которые отображаются в «pos» и «neg», но res.boot$t возвращает матрицу целых чисел, принимающую значения 1 или 2, где estim.pred - статистика c из res.boot$t.

Не могли бы вы объяснить причину этого явления?

library(rpart)
library(boot)
library(mlbench)
data(PimaIndiansDiabetes)

n <- 768
ntrain <- 468
ntest <- 300
B <- 100
M <- 100
train.error <- vector(length = M)
test.error <- vector(length = M)
bagging.error <- vector(length = M)

estim.pred <- function(a.sample, vector.of.indices)
      {
      current.train <- a.sample[vector.of.indices, ]
      current.fitted.model <- rpart(diabetes ~ ., data = current.train, method = "class")
      predict(current.fitted.model, test.set, type = "class")
      }

fitted.tree <- rpart(diabetes ~ ., data = train.set, method = "class")
pred.train <- predict(fitted.tree, train.set, type = "class")
res.boot = boot(train.set, estim.pred, B)

head(pred.train)
head(res.boot$t)

enter image description here

1 Ответ

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

Вот @Roland комментарий. Я публикую его здесь, чтобы удалить мой вопрос из списка без ответа.

res.boot$t - это матрица. Матрица не может содержать факторную переменную. Таким образом, матрица содержит базовые целочисленные значения. Переставьте матрицу, превратите ее в data.frame и превратите целые числа в факторные переменные с вашими уровнями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...