r - 使用 Caret 包进行随机森林(回归)时出错

标签 r error-handling random-forest cross-validation r-caret

所以,我正在尝试训练一个模型并使用随机森林回归对其进行测试。我的响应变量是一个数字,我还有 23 个其他变量,它们是数字和字符的混合。我正在使用以下代码块:

library(e1071)
library(dplyr)
library(class)
library(caret)
library(kernlab)

data=read.csv(choose.files())


set.seed(1)
mydata=data
n=dim(mydata)[1]
p=dim(mydata)[2]-1
x=mydata[,-3]
y=mydata[,3]

n_train=35
n_test=9

random_order=sample(n)
test_index=random_order[1:n_test]
train_index=random_order[-(1:n_test)]
y_train=y[train_index]
y_test=y[test_index]
x_train=x[train_index,]
x_test=x[test_index,]

traindata=data.frame(x=x_train,y=(y_train))
testdata = data.frame(x=x_test,y=(y_test))

fitControl <- trainControl(## 10-fold CV
  method = "repeatedcv",classProbs=TRUE, 
  number = 10,
  ## repeated ten times
  repeats = 10)

set.seed(1)
newrf=train(y ~ ., data = traindata , method = "rf", 
             trControl = fitControl)

newrf 
bestmodel_rf= newrf$finalModel
ypredcaret=predict(bestmodel_rf, newdata = testdata)
table(predict=ypredcaret, truth=y_test)
plot(newrf)
bestmodel_rf

我收到以下错误:

警告信息:
在 train.default(x, y, weights = w, ...) 中:
无法计算回归的类别概率
警告信息:
在 train.default(x, y, weights = w, ...) 中:
无法计算回归的类别概率

最佳答案

您已指定 classProbs=TtrainControl ,这表明应该为分类模型计算类概率(其中响应变量由离散的类标签组成)。但是,该参数设置与您的数值响应变量冲突(这表明将训练回归模型),从而导致错误消息无法为回归计算类概率。

由于您的描述和数字响应变量表明这是一个回归问题,因此删除 classProbs=T (默认设置是 classProbs=F )您的代码应该可以解决您遇到的错误。

关于r - 使用 Caret 包进行随机森林(回归)时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42937187/

相关文章:

flash - AS3 : ERROR 1046: Type was not found or was not a compile-time constant: Stage and TextField

python-3.x - 为什么我的损失函数返回负值?

r - 在 R 中将正类设置为 1

r - 在 FluidRow 中将输入与标签和 ActionButton 垂直对齐

r - 使用 ggplot2 生成雷达图

r - 在dplyr tbl_df中删除列的最佳实践

node.js - 无法在 Node js 上使用 mocha 运行 PhantomJS

node.js - 安装时出现奇怪的良性 Node.JS 错误/警告

python - 为什么交叉验证 RF 分类的性能比没有交叉验证的差?

r - 距离矩阵计算