创建预定义 S3 对象的列表

Create list of predefined S3 objects

我正忙于比较 R 中不同的机器学习技术。情况是这样的:我制作了几个函数,它们能够以自动化的方式创建每个不同的预测模型(例如:逻辑回归、随机森林、神经网络、混合集成等)、预测、混淆矩阵、多个统计数据(例如 AUC 和 Fscore)以及不同的绘图。

我设法创建了一个能够存储所需数据的 S3 对象。 但是,当我尝试创建我定义的对象的列表时,这失败了,所有数据都按顺序存储在 1 个大列表中。

这是我的 S3 对象(因为这是我第一次创建 S3,我不确定代码是否 100% 正确):

modelObject <- function(modelName , modelObject, modelPredictions , rocCurve , aUC , confusionMatrix )
{

  modelObject <- list(
    model.name = modelName,
    model.object = modelObject,
    model.predictions = modelPredictions,
    roc.curve = rocCurve,
    roc.auc = aUC,
    confusion.matrix = confusionMatrix

  )

  ## Set the name for the class
  class(modelObject) <- "modelObject"
  return(modelObject)
}

在每个机器学习函数的末尾,我定义并 return 对象: 缩短示例:

NeuralNetworkAnalysis<- function() {
  #I removed the unnecessary code, as only the end of the code is relevant
  nn.model <- modelObject(modelName = "Neural.Network" , modelObject = NN , modelPredictions = predNN , rocCurve = roc , aUC = auc , confusionMatrix = confu  )
 return(nn.model)
  }

最后,在我的 'script' 函数中,我创建了一个空列表并尝试附加不同的对象

 #function header and arguments before this part are irrelevant

# Build predictive model(s)
  modelList = list("model" = modelObject)
  modelList <- append(modelList ,   NeuralNetworkAnalysis())
  modelList <- append(modelList,  RandomForestAnalysis())
  mod <<- RandomForestAnalysis() #this is to test what the outcome is when I do not put it in a list
  return(modelList) } #end of the function ModelBuilding
models <- ModelBuilding( '01/01/2013'  , '01/01/2014'  ,  '02/01/2014' ,  '02/01/2015' )

现在,当我查看模型列表时,我没有对象列表,我只有一个包含每个算法的所有数据的列表。

class(models) [1] "list"

class(mod) [1] "modelObject"

我怎样才能解决这个问题,这样我就可以有一个列表,其中包含例如:

list$random.forest$variable.I.want.to.access (most favorable)

list[i]$variable.of.random.forest.that.I.want.to.access

提前谢谢!

奥利维尔

不确定我是否理解正确,但问题可能只是您的模型列表是如何构建的。如果你尝试

 modelList[["neural.network"]] <- NeuralNetworkAnalysis()
 modelList[["random.forest"]] <- RandomForestAnalysis()

等等,这是否为您提供了您正在寻找的访问方法?