我一直在训练WEKA模型文件,我想看看这些文件的内容。
我尝试将其文件扩展名更改为.class
和.java
,但结果无法读取。
谷歌搜索让我回答了问题“content of a classifier 'model' file (weka-3-7-1)”,但没有直接答案。
我希望看到模型文件的规则和权重的实际代码,不仅来自可视化或查看生成的缓冲区代码。
这可能吗?
我想从WEKA看到.model
文件的源代码的原因是:
我知道结果缓冲区在决策树分类器中提供生成的树,但其他的只显示权重和节点。
您能否就如何处理此问题向我提出其他建议?
答案 0 :(得分:3)
不,目前Weka无法做到这一点。保存模型时,实际上是序列化由特定算法实现的对象。该类可以包含学习算法使用的任意状态变量。因此,它只能反序列化为同一类的实例。
理论上,Weka可以提供一个接口,允许学习算法将模型输出为纯Java代码而不是二进制序列化实例,但它现在不存在。我目前在工作中使用专有的ML框架,实际上有这些接口和许多算法,如决策树和回归,输出模型作为C ++代码,您可以直接添加到项目中,消除运行时依赖性。
有关Weka模型序列化的更多信息:http://weka.wikispaces.com/Serialization
如果您对可视化感兴趣,请参阅:http://weka.wikispaces.com/Explorer+tree+visualization+plugins
答案 1 :(得分:2)
您想要关注。
我需要证明我制作的模型文件是我从数据集生成的实际文件
我建议修改分类器的weka源代码并执行以下操作。
我想补充以下几点。以前的答案大多是正确的,但它错过了一些观点。
weka的一些分类器可以生成java代码,请参阅Generating source code from WEKA classes。以下摘录自该链接。
Some of the schemes in Weka can generate Java source code that represents their current internal state. At the moment these are classifiers (book and developer version) and filters (snapshot or >3.5.6).
翻译如果分类器或过滤器实现Sourcable (Source able?)接口,您可以获得分类器/过滤器的java代码版本,见下文。
weka.classifiers
Interface Sourcable
All Known Implementing Classes:
AdaBoostM1, DecisionStump, J48, LogitBoost, OneR, REPTree, ZeroR
对于所有其他分类器,模型文件为java serialized files。请注意,序列化是 java概念而不是weka,因此所有限制都属于java。您可以根据以下link执行您的要求。
The serialized form contains sufficient information
such that it can be restored to an identical clone of the original JAVA object
但我认为为您的分类器实现Sourcable接口比遵循该路径更容易。