我使用randomForest包运行随机森林分类。当它完成后,我在我的分类器上输入了summary(),当我被告知默认值为500时,ntree参数似乎等于1,并且可以在randomForest的参数中手动更改,我尝试失败了。
我还尝试了另一个数据集,我遇到了同样的问题。有没有人知道可能会发生什么?
答案 0 :(得分:2)
TL; DR:要获取模型的摘要,只需键入模型对象的名称即可。例如,如果模型对象为rf1
,则为rf1
,而不是summary(rf1)
。
大多数软件包都有一个摘要“方法”,当您对软件包生成的对象运行summary
时,该方法将被调度。但是在randomForest
的情况下,似乎没有摘要方法。 randomForest
的输出是包含一堆模型输出的列表。当你在它上运行summary
时,它只运行默认的summary
函数,它返回每个列表元素的长度,这在这里不是很有用。
因此,在这种情况下,当您在summary
模型对象上运行randomForest
时,ntree
的值为1,因为ntree
是randomForest
返回的列表元素,它是长度为1的向量。(请注意,summary
输出的列名为Length
。)
要查看模型结果的摘要,只需键入模型对象的名称,这将导致将实际摘要打印到控制台。例如,如果您的模型对象名为rf1
,则只需键入rf1
,而不是summary(rf1)
。键入对象名称会导致调度print.randomForest
方法,这会提供randomForest
结果的摘要,包括ntree
。
如果要从模型中提取ntree
或其他结果的值,请运行str(rf1)
以查看randomForest
返回的列表的结构,并查看帮助randomForest
了解有关此列表中的内容的其他信息。例如,rf1$ntree
将返回模型中树的数量。