R 如何将随机森林预测概率转换为单个分类响应?

R 如何将随机森林预测概率转换为单个分类响应?,r,random-forest,prediction,R,Random Forest,Prediction,我有许多大型随机森林分类模型(每个运行时间约60分钟),用于使用type=“prob”选项预测光栅。我对光栅输出很满意(每个x类作为光栅堆栈的概率)。但是,我想用一种简单的方法将这些概率(具有x层的光栅堆栈,其中x是类的数量)转换为一个简单的单层分类(即,仅优胜者,无概率)。这相当于type=“response” 下面是一个简单的示例(不是光栅,但仍然适用): 库(随机林) 数据(iris) 种子(111) ind如果您尝试使用与iris.prob相同的常规格式确定多个列的最大值,我将尝试从每行

我有许多大型随机森林分类模型(每个运行时间约60分钟),用于使用type=“prob”选项预测光栅。我对光栅输出很满意(每个x类作为光栅堆栈的概率)。但是,我想用一种简单的方法将这些概率(具有x层的光栅堆栈,其中x是类的数量)转换为一个简单的单层分类(即,仅优胜者,无概率)。这相当于type=“response”

下面是一个简单的示例(不是光栅,但仍然适用):

库(随机林)
数据(iris)
种子(111)

ind如果您尝试使用与iris.prob相同的常规格式确定多个列的最大值,我将尝试从每行中查找最大值并返回colname

colnames(iris.prob)[max.col(iris.prob,ties.method="first")]

从中获得了确切用法,因此如果这不起作用,您可以尝试另一个响应

如果您尝试确定多个列的最大值,使用与iris相同的常规格式。prob
我将尝试从每行中找到最大值并返回colname

colnames(iris.prob)[max.col(iris.prob,ties.method="first")]

从中获得了确切的用法,因此如果这不起作用,您可以尝试另一个响应

iris.prob应该包含一个分类结果,并且有可能将一个观察分为一个类别。所以您只需要提取每行最大值的colname

例如: iris.resp2=colnames(iris.prob)[应用(iris.prob,1,which.max)]


iris.resp2==as.character(iris.resp)应在每次返回TRUE时

iris.prob应包含分类结果,并且一个观察值被分类到一个类别中的概率。所以您只需要提取每行最大值的colname

例如: iris.resp2=colnames(iris.prob)[应用(iris.prob,1,which.max)]


iris.resp2==as.character(iris.resp)应在每次运行
iris.rf
后返回TRUE,
predict
函数不需要重新运行模型。一旦模型运行,预测应该快得多,因为它们只使用模型的输出来计算概率或响应。您是否正在尝试找到运行预测的最有效方法?或者您正在试图找出如何从
type=“prob”
中获得与从
type=“response”
中获得的值相同的值?是的,我同意。但是我没有访问模型(iris.rf)——只有输出概率(iris.prob)。需要一种简单的方法将概率对象转换为单个分类对象好的,那么有人已经运行了模型以及
iris.prob
,而您正试图在不运行模型的情况下复制
iris.resp
?我知道运行这个模型需要很多小时,我只是想准确地找出问题所在。谢谢运行
iris.rf
后,
predict
功能不需要重新运行模型。一旦模型运行,预测应该快得多,因为它们只使用模型的输出来计算概率或响应。您是否正在尝试找到运行预测的最有效方法?或者您正在试图找出如何从
type=“prob”
中获得与从
type=“response”
中获得的值相同的值?是的,我同意。但是我没有访问模型(iris.rf)——只有输出概率(iris.prob)。需要一种简单的方法将概率对象转换为单个分类对象好的,那么有人已经运行了模型以及
iris.prob
,而您正试图在不运行模型的情况下复制
iris.resp
?我知道运行这个模型需要很多小时,我只是想准确地找出问题所在。谢谢谢谢,这是总的想法。但是,这种方法在大型光栅堆栈上的速度非常慢。尽量提高效率。嗯。。。所以我不确定我能帮上什么忙,它已经非常优化了,因为它只是以向量化的方式在已经计算好的矩阵和向量上使用内置函数!我的意思是,对于一个有1M行和100列的723MB矩阵,在我的计算机上只需不到5秒钟。我希望你能找到答案!祝你好运,这是总的想法。但是,这种方法在大型光栅堆栈上的速度非常慢。尽量提高效率。嗯。。。所以我不确定我能帮上什么忙,它已经非常优化了,因为它只是以向量化的方式在已经计算好的矩阵和向量上使用内置函数!我的意思是,对于一个有1M行和100列的723MB矩阵,在我的计算机上只需不到5秒钟。我希望你能找到答案!祝你好运