使用Weka和Python来加载分类器模型。

4

我按照链接中的说明,通过weka保存了训练模型。

现在,我想在Python程序中加载此模型,并使用该模型测试查询。因此,我有一个名为“naivebayes.model”的文件,其中保存了朴素贝叶斯多项式可更新分类器。我使用Python-Weka包装器尝试了下面的代码。但是我不确定模型是否已加载。

from weka.core.converters import Loader, Saver
import weka.core.jvm as jvm
from weka.classifiers import Classifier, Evaluation

#starting JVM
jvm.start()

classifier = Classifier(classname="weka.classifiers.bayes.NaiveBayesMultinomialUpdateable", options=['-l','naivebayes.model'])
print(classifier)
print (dir(classifier))

#stopping JVM
jvm.stop()

请问有没有正确的方法来做这件事?感谢您的帮助。

1个回答

4
-l选项并非由分类器解析的选项,而是由Weka的Evaluation类解析的。如果您想加载序列化模型,则必须手动反序列化它。您可以按照以下方式执行此操作:
import weka.core.serialization as serialization
from weka.classifiers import Classifier
objects = serialization.read_all("naivebayes.model")
classifier = Classifier(jobject=objects[0])
print(classifier)

上述代码假设模型是使用Weka进行序列化的,因为它在文件中存储了两个对象,即模型和数据集头。 上述代码摘自python-weka-wrapper文档

1
新的文档链接 https://fracpete.github.io/python-weka-wrapper/api.html#serialization - Luciano Marqueto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接