我正在尝试使用“caret”包的 train 功能通过交叉验证来构建 CART 模型。
我的数据是 4500 x 110 数据框,其中所有预测变量(除了我不用于模型构建的前两个,UserId 和 YOB(出生年份))都是具有 2 个级别的因子,但因变量是类型整数(虽然只有两个值 1 和 0)。性别是自变量之一。
当我运行 rpart 命令来获取 CART 模型(使用包“rpart”)时,我对 predict 函数没有任何问题。但是,我想通过交叉验证来改进模型,因此使用包“caret”中的 train 函数和以下命令:
tr = train(y ~ ., data = subImpTrain, method = "rpart", trControl = tr.control, tuneGrid = cp.grid)
这将使用以下警告构建模型
Warning message:
In nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo, :
There were missing values in resampled performance measures.
但它确实给了我一个最终模型(best.tree)。但是,当我尝试使用以下命令运行预测函数时:
best.tree.pred = predict(best.tree, newdata = subImpTest)
在测试数据上,它给了我以下错误:
Error in eval(expr, envir, enclos) : object 'GenderMale' not found
性别变量有两个值:女性、男性
谁能帮我理解错误