我一直在使用Weka GUI(特别是3.7.11中的资源管理器)来训练一些模型。然后,我通过右键单击结果窗格中的模型来保存训练的模型。我编写了一些简单的Java代码,可以加载保存的模型并使用它来对新实例进行分类。这一切都很有效。
当然,我希望在训练模型之前对我的数据进行一些预处理。一些预处理步骤学习了价值。例如,缺失值过滤器从训练数据中学习每个特征的均值或模式。因此,我希望保存学习过滤器,就像保存学习模型一样,这样我就可以应用过滤器,然后将模型应用到训练模型时无法使用的新实例。
我似乎找不到任何方法来序列化过滤器。可以这样做吗?如果没有,为简单的解决方法提出任何建议吗?
答案 0 :(得分:0)
来自Weka邮件列表上的Mark Hall:
http://list.waikato.ac.nz/pipermail/wekalist/2014-November/062329.html
基本上,您选择“meta classifiers”类别中的“Filtered Classifier”作为分类器。然后选择您想要的任何分类器作为它使用的分类器。然后选择“多重过滤器”元过滤器并在分类器之前应用任何系列的过滤器。结果似乎是可以保存的单个分类器,但它实际上是分类器后跟的一系列过滤器。
答案 1 :(得分:0)
您可以使用Java提供的ObjectInputStream。
检查此链接,解释如何序列化和反序列化weka对象。 https://waikato.github.io/weka-wiki/serialization/#serializing