Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 随机森林变量长度不同_R_Machine Learning_Classification_Regression_Random Forest - Fatal编程技术网

R 随机森林变量长度不同

R 随机森林变量长度不同,r,machine-learning,classification,regression,random-forest,R,Machine Learning,Classification,Regression,Random Forest,我尝试使用一个特性作为响应变量来运行RF。我在通过变量传递字符串以用作RF中的响应时遇到问题。首先,我尝试在通过变量作为响应的字符串上运行RF,得到一个“向量长度不同错误”。在这之后,我尝试输入实际的字符串(特性)作为响应,它工作得很好。你能解释一下为什么可变长度不同吗?谢谢 > colnames(Data[1]) [1] "feature1" > rf.file = randomForest(formula =colnames(Data[1])~ ., data = Data, p

我尝试使用一个特性作为响应变量来运行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
> 

你只是误解了公式的工作原理。基本上,你的第一次尝试是行不通的

公式应包括变量名称,可能包括变量的简单函数。e、 g

var1 ~ var2
var1 ~ log(var2)
请注意缺少引号。如果你没有引用它,它不是一个字符串,而是一个符号

因此,避免在公式中使用原始字符串、奇怪的求值要求(如
数据[1]
,或使用
$
)。要从字符串构造公式,请将其粘贴在一起,然后对结果字符串调用
as.formula

请记住,公式的要点在于您提供了模型的符号表示,然后R将查找您在提供的数据框中指定的特定列


我认为有些函数会为您强制执行公式的字符串表示(例如,
“var1~var2”
),但我不会指望或期待它。

您只是误解了公式的工作原理。基本上,你的第一次尝试是行不通的

公式应包括变量名称,可能包括变量的简单函数。e、 g

var1 ~ var2
var1 ~ log(var2)
请注意缺少引号。如果你没有引用它,它不是一个字符串,而是一个符号

因此,避免在公式中使用原始字符串、奇怪的求值要求(如
数据[1]
,或使用
$
)。要从字符串构造公式,请将其粘贴在一起,然后对结果字符串调用
as.formula

请记住,公式的要点在于您提供了模型的符号表示,然后R将查找您在提供的数据框中指定的特定列


我认为有些函数会为您强制执行公式的字符串表示(例如,
“var1~var2”
),但我不会指望,也不会期待它。

感谢您的回复!我看到,粘贴可以用来构造字符串,用于公式中,这种方法实际上是可行的。我发现的另一种方法是使用公式(x,y)并调用实际数据表中的坐标作为x,y坐标:randomForest(数据[,-1],数据[,1],接近度=T),感谢您的响应!我看到,粘贴可以用来构造字符串,用于公式中,这种方法实际上是可行的。我发现的另一种方法是使用公式(x,y)并调用实际数据表中的坐标作为x,y坐标:randomForest(数据[,-1],数据[,1],接近度=T)