Использование результатов PCA в качестве входных данных для модели XGboost, вызывающей ошибку: имена функций, хранящиеся в `object` и` newdata`, различаются - PullRequest
0 голосов
/ 11 октября 2019

Я использую PCA в своем наборе данных разделенного поезда и проецирую тестовый набор данных на результаты после удаления ненужных столбцов.

data <- read.csv('bottom10.csv')
set.seed(1)
inTrain <- createDataPartition(data$cuisine, p = .8)[[1]]
dataTrain <- data[,-1][inTrain,][,-1]
dataTest <- data[,-1][-inTrain,][,-1]
cuisine.pca <- prcomp(dataTrain[,-1])

Затем я извлекаю первые 500 компонентов и проецирую набор тестовых данных.

traincom <- cuisine.pca$x[,1:500]
testcom <- scale(dataTest[,-1], cuisine.pca$center) %*% cuisine.pca$rotation

Затем я передаю метки в целое число и объединяю компоненты и метки в форму xgbDMatrix.

label_train <- as.integer(dataTrain$cuisine) - 1
label_test <- as.integer(dataTest$cuisine) - 1
xgb_train <- xgb.DMatrix(data = traincom, label = label_train)
xgb_test <- xgb.DMatrix(data = testcom, label = label_test)

Затем я строю модель xgboost как

xgb.fit <- xgboost(cuisine~., data = xgb_train, nrounds = 40, num_class = 10, early_stopping_rounds = 5)

И после этого появляется предупреждение, но тренировка все еще может быть запущена.

xgboost: label will be ignored

IМожно предсказать набор данных поезда, используя модель, но когда я попытаюсь предсказать набор тестовых данных, произойдет ошибка.

xgb_pred <- predict(xgb.fit, newdata = xgb_train)
sum(label_train == xgb_pred)/length(label_train)
xgb_pred <- predict(xgb.fit, newdata = xgb_test, rescale = T)

Error in predict.xgb.Booster(xgb.fit, newdata = xgb_test, rescale = T) : 
  Feature names stored in `object` and `newdata` are different!

Пожалуйста, дайте мне знать, что я делаю неправильно?

С уважением

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