RMOA Hoeffding Tree with Holdout Evaluation

我正在使用RMOA包在R中实现一个带有保留集评估的Hoeffding Tree流分类器。

一切都训练得很好,除了当我尝试从保留的测试流中评估我的模型时,我遇到了以下错误信息:

在UseMethod(“predict”)中出错:没有适用于类为”c(‘HoeffdingTree’, ‘MOA_classifier’, ‘MOA_model’)”对象的’predict’方法

我查看了这个问题的答案,问题可能源于predict()方法同时存在于statsRMOA包中。我尝试使用::符号来指定使用哪个包,但似乎无法指向RMOA predict()。我也尝试完全卸载stats,但这并没有帮助。

有谁知道如何直接指向RMOApredict()方法,或者我的问题是否由其他原因引起?

我的R代码如下。我目前只是在流式传输iris数据集,并提取前30个流项目用于保留集评估。

holdout<-function(){    require("RMOA")    #初始化流    stream<-datastream_dataframe(iris)    test<-stream$get_points(n=30)    test<-datastream_dataframe(test)    #指定模型    mymodel<-HoeffdingTree(numericEstimator = "GaussianNumericAttributeClassObserver")    #记录训练执行时间    start_time<-Sys.time()    while(!stream$finished)    {        mymodel <<- trainMOA(model=mymodel, formula = Species ~ Sepal.Length+Sepal.Width+Petal.Length+Petal.Width, data=stream)    }    end_time<-Sys.time()    time_taken <- end_time - start_time    cat("训练完成。耗时:", time_taken)    #用于存储保留集流元素的单个准确性结果的空向量    accuracies<-c()    #记录保留集评估的执行时间    start_time<-Sys.time()    while(!test$finished)    {        samp<-test$get_points(n=1)        pred <- predict(mymodel, samp, type="response")    }    end_time<-Sys.time()    time_taken <- end_time - start_time    cat("训练完成。耗时:", time_taken)}

回答:

RMOA包中的predict方法是一个内部变量,你可以这样调用它:

RMOA:::predict.MOA_trainedmodel

完整示例:

library(RMOA)data(iris)stream <- datastream_dataframe(iris)test <- stream$get_points(n = 30)test <- datastream_dataframe(test)mymodel <- HoeffdingTree(numericEstimator = "GaussianNumericAttributeClassObserver")mymodel <- trainMOA(model = mymodel, formula = Species ~ Sepal.Length+Sepal.Width+Petal.Length+Petal.Width, data = stream)

在我的情况下,predict函数没有被屏蔽(如果它没有被导出,这很奇怪):

pred1 <- predict(mymodel, iris, type = "response")

但如果它被屏蔽了,我可以使用:

pred2 <- RMOA:::predict.MOA_trainedmodel(mymodel, iris, type = "response")

结果将是相同的:

all.equal(pred1, pred2)#outputTRUE

我检查了RMOA的NAMESPACE,predict函数是被导出的,但不知为何

RMOA::predict.MOA_trainedmodel

会导致

错误:’predict.MOA_trainedmodel’不是’namespace:RMOA’中导出的对象

RMOA:::predict.MOA_trainedmodel

则不会

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注