所以,我正在尝试训练模型并使用随机森林回归进行测试 . 我的响应变量是一个数字,我有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,...):cannnot计算回归的类概率警告消息:在train.default(x,y,weights = w,...):cannnot compute回归的类概率
1 回答
您已在
trainControl
中指定classProbs=T
,这表示应为分类模型计算类概率(其中响应变量由离散类标签组成) . 但是,该参数设置与您的数字响应变量冲突(表示将训练回归模型),从而导致无法为回归计算类概率的错误消息 .由于您的描述和数字响应变量表明这是回归问题,因此从代码中删除
classProbs=T
(默认设置为classProbs=F
)应该可以解决您遇到的错误 .