r - 无法运行插入符号 xgboost 分类

标签 r r-caret xgboost

我尝试使用 xgboost 对虹膜数据进行分类,但遇到此错误。

"Error in frankv(predicted) : x is a list, 'cols' can not be 0-length In addition: Warning message: In train.default(x_train, y_train, trControl = ctrl, tuneGrid = xgbgrid, : cannnot compute class probabilities for regression"

我正在使用以下代码。任何帮助或解释将不胜感激。

data(iris)
library(caret)
library(dplyr)
library(xgboost)

set.seed(123)
index <- createDataPartition(iris$Species, p=0.8, list = FALSE)
trainData <- iris[index,]
testData <- iris[-index,]


x_train = xgb.DMatrix(as.matrix(trainData %>% select(-Species)))
y_train = as.numeric(trainData$Species)



#### Generic control parametrs
ctrl <- trainControl(method="repeatedcv", 
                    number=10, 
                    repeats=5,
                    savePredictions=TRUE, 
                    classProbs=TRUE,
                    summaryFunction = twoClassSummary)

xgbgrid <- expand.grid(nrounds = 10,
                    max_depth = 5,
                    eta = 0.05,
                    gamma = 0.01,
                    colsample_bytree = 0.75,
                    min_child_weight = 0,
                    subsample = 0.5,
                    objective = "binary:logitraw",
                    eval_metric = "error")


set.seed(123)
xgb_model = train(x_train, 
                y_train,  
                trControl = ctrl,
                tuneGrid = xgbgrid,
                method = "xgbTree")

最佳答案

有几个问题:

  1. 结果变量应该是一个因素。

  2. 调谐网格具有插入符号的调谐网格未使用的参数。

  3. 由于存在三个级别,因此使用两级摘要是不合适的。多类摘要与 summaryFunction = multiClassSummary 一起使用。

一个工作示例:

data(iris)
library(caret)
library(dplyr)
library(xgboost)
    set.seed(123)
index <- createDataPartition(iris$Species, p=0.8, list = FALSE)
trainData <- iris[index,]
testData <- iris[-index,]


x_train = xgb.DMatrix(as.matrix(trainData %>% select(-Species)))
y_train = as.factor(trainData$Species)



#### Generic control parametrs
ctrl <- trainControl(method="repeatedcv", 
                     number=10, 
                     repeats=5,
                     savePredictions=TRUE, 
                     classProbs=TRUE,
                     summaryFunction = multiClassSummary)

xgbgrid <- expand.grid(nrounds = 10,
                       max_depth = 5,
                       eta = 0.05,
                       gamma = 0.01,
                       colsample_bytree = 0.75,
                       min_child_weight = 0,
                       subsample = 0.5)


set.seed(123)
x_train 
xgb_model = train(x_train, 
                  y_train,  
                  trControl = ctrl,
                    method = "xgbTree",
                  tuneGrid = xgbgrid)
xgb_model

关于r - 无法运行插入符号 xgboost 分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57043159/

相关文章:

r - 识别和计算R中逗号分隔字符串中的 "correct"个字母

python - 在 Google Colaboratory 上使用 GPU 的 XGBoost

r - 在插入符交叉验证期间计算模型校准?

r - 插入符号 : combine the stratified createMultiFolds (repeatedCV) and groupKFold

r - sort.list(y) 中的错误 : 'x' must be atomic for 'sort.list'

Python-Classifier-Xgboost - 在 GridSearchCV 中显示带有参数、持续时间、分数的 cv

python - 使用 XGboost 进行不平衡分类时如何使用下采样和配置类权重参数?

r - 在 SVM 中绘制 Roc 曲线

r - 在ggplot中设置y轴中断

javascript - RSelenium 从 Javascript 列表中选择下拉列表/组合框值