0
我想使用一个特性作为响应变量来运行RF。我无法通过一个变量传递一个字符串作为RF中的响应。首先,我尝试在通过变量传递的字符串上运行RF作为响应,并得到“向量长度不同的错误”。在此之后,我尝试输入实际的字符串(特征)作为响应,并且它工作正常。你能否介绍一下为什么可变长度不同?谢谢。随机森林可变长度不同
> colnames(Data[1])
[1] "feature1"
> rf.file = randomForest(formula =colnames(Data[1])~ ., data = Data, proximity = T, importance = T, ntree = 500, nodesize = 3)
Error in model.frame.default(formula = colnames(Data[1]) ~ ., :
variable lengths differ (found for 'feature1')
Enter a frame number, or 0 to exit
1: randomForest(formula = colnames(Data[1]) ~ ., data = Data, proximity = T, importance = T, ntree = 500, nodesize = 3)
2: randomForest.formula(formula = colnames(Data[1]) ~ ., data = brainDataTrim, proximity = T, importance = T, ntree = 500, nodesize = 3)
3: eval(m, parent.frame())
4: eval(expr, envir, enclos)
5: model.frame(formula = colnames(Data[1]) ~ ., data = Data, na.action = function (object, ...)
6: model.frame.default(formula = colnames(Data[1]) ~ ., data = Data, na.action = function (object, ...)
Selection: 0
> rf.file = randomForest(formula =feature1~ ., data = Data, proximity = T, importance = T, ntree = 500, nodesize = 3)
> rf.file
Call:
randomForest(formula = feature1 ~ ., data = Data, proximity = T, importance = T, ntree = 500, nodesize = 3)
Type of random forest: regression
Number of trees: 500
No. of variables tried at each split: 3
Mean of squared residuals: 0.1536834
% Var explained: 34.21
>
感谢您的回应!我发现可以使用paste来构造字符串以便在公式中使用,并且这种方式实际上可以实现。另一种方法是使用公式(x,y)并在实际数据表中调用坐标以用作x,y坐标:randomForest(Data [,-1],Data [,1] ,接近度= T) –