我正在忙着比较R中的不同机器学习技术。情况就是这样:我制作了几个函数,以自动方式创建每个不同的预测模型(例如:逻辑回归,随机森林,神经网络) ,混合集合等),预测,混淆矩阵,几个统计(例如AUC和Fscore),以及不同的情节。
我设法创建了一个能够存储所需数据的S3对象。 但是,当我尝试创建一个已定义对象的列表时,这会失败,并且所有数据都按顺序存储在一个大列表中。
这是我的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)
}
在每个机器学习功能结束时,我定义并返回对象: 缩短的例子:
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)
}
最后,在我的脚本&#39;函数,我创建一个空列表,并尝试追加不同的对象
#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]&#34; list&#34;
class(mod)[1]&#34; modelObject&#34;
如何解决此问题,以便我可以拥有一个包含例如:
的列表列出$ random.forest $ variable.I.want.to.access(最优惠)
或
提前thx!列表[I] $ variable.of.random.forest.that.I.want.to.access
奥利弗
答案 0 :(得分:1)
不确定我是否理解正确,但问题可能只是您的模型列表的构建方式。如果你试试
modelList[["neural.network"]] <- NeuralNetworkAnalysis()
modelList[["random.forest"]] <- RandomForestAnalysis()
等,是否会为您提供您正在寻找的访问方法?