【问题标题】:training random forest using caret package使用插入符号包训练随机森林
【发布时间】:2016-04-10 07:52:21
【问题描述】:

我想用我的训练数据来训练一个随机森林模型,但是出现了一些错误。

错误信息如下:

Error in train.default(x, y, weights = w, ...) : 
At least one of the class levels is not a valid R variable name; This will cause errors when class probabilities
are generated because the variables names will be converted to  X1, X2, X3, X4, X5, X6, X7 . Please use factor 
levels that can be used as valid R variable names  (see ?make.names for help).

下面是我的代码:

rf.ctrl <- trainControl(method = "repeatedcv",
                    number = 10,
                    repeats = 10,
                    classProbs = TRUE,
                    summaryFunction = twoClassSummary)


set.seed(256)

#train the calssification model with random forest
rf.model <- train(as.factor(response) ~ .,data = trainvals,
              method = "rf",
              trControl = rf.ctrl,
              tuneLength = 10,
              metic = "ROC")

trainvals的结构是:

响应级别为 1、2、3、4、5、6 和 7。

【问题讨论】:

    标签: random-forest r-caret roc


    【解决方案1】:

    trainvals 数据框中的一列或多列不是因子类型,因此会出现错误。您可以使用以下方法将所有列转换为因子:

    trainvals[] <- lapply(trainvals, factor)
    

    【讨论】:

    • 蒂姆,谢谢。我尝试使用您的代码再次训练我的模型,但它无法正常工作。我还有一个问题。你知道如何将 1 和 2 的类级别分别更改为农田和森林吗?