Я использую xgboost в R, чтобы построить классификационную модель на обучающем наборе данных train
. train
имеет следующие атрибуты.разница между sparse.model.matrix и as.matrix
- она имеет всю числовую Характеристику
- нет недостающих значений.
- нет категориальных/текстовых/факторных переменных.
TARGET
- целевая переменная, принимающая значения 1/0.
xgb.train требует передачи данных в определенном формате, поэтому я попытался выполнить два способа получения формата, требуемого xgb.train.
1.
y <- train$TARGET
train <- sparse.model.matrix(TARGET ~ ., data = train) ##has 76000 rows and 307 columns
xgtrain <- xgb.DMatrix(data=train, label=y)
2.
y <- train$TARGET
train$TARGET <- NULL
x = as.matrix(train)
x = matrix(as.numeric(x),nrow(x),ncol(x)) ##has 76000 rows and 307 columns
xgtrain = xgb.DMatrix(x, label = y)
Теперь, когда я забил тестовый набор, используя модель, построенную этими 2 xgtrain
методы создания, я получаю разные результаты/ППК. Я проверял, что это не проблема с рандомизацией, так как я смог воспроизвести баллы, если я запускаю 1-й метод или 2-й метод дважды/трижды. Что-то происходит по-разному в двух методах, которые я не смог выяснить. Может кто-нибудь, пожалуйста, помогите мне определить эту разницу?
Вопрос другими словами. Что делает sparse.model.matrix
по-разному от as.matrix
, когда предоставленные им данные имеют только числовые функции без отсутствующих значений и без категориальных переменных?
, но когда я проверяю столбцы, используя Ncol (поезд) до и после, он становится таким же. Зачем? – user3664020
@ user3664020 В первом примере матрица все еще имеет столбец «Цель», во втором примере вы удаляете этот столбец и добавляете перехват к матрице. – amit