Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何访问WEKA模型文件的源代码_Java_Machine Learning_Weka_Modeling_Prediction - Fatal编程技术网

Java 如何访问WEKA模型文件的源代码

Java 如何访问WEKA模型文件的源代码,java,machine-learning,weka,modeling,prediction,Java,Machine Learning,Weka,Modeling,Prediction,我一直在培训WEKA模型文件,我想看看这些文件的内容 我尝试将它们的文件扩展名更改为.class和.java,但结果不可读 谷歌搜索让我想到了这个问题“”,但没有直接的答案 我希望看到模型文件的规则和权重的实际代码,而不仅仅是通过可视化或看到生成的缓冲区代码 这可能吗 附加的 我想查看WEKA中.model文件的源代码的原因是: 我需要证明我制作的模型文件是我从数据集生成的实际文件 我知道结果缓冲区在决策树分类器中提供生成的树,但其他缓冲区只显示权重和节点 你能给我一些其他的建议来解决这个问题

我一直在培训WEKA模型文件,我想看看这些文件的内容

我尝试将它们的文件扩展名更改为
.class
.java
,但结果不可读

谷歌搜索让我想到了这个问题“”,但没有直接的答案

我希望看到模型文件的规则和权重的实际代码,而不仅仅是通过可视化或看到生成的缓冲区代码

这可能吗


附加的 我想查看WEKA中
.model
文件的源代码的原因是:

我需要证明我制作的模型文件是我从数据集生成的实际文件 我知道结果缓冲区在决策树分类器中提供生成的树,但其他缓冲区只显示权重和节点


你能给我一些其他的建议来解决这个问题吗?

不,这在Weka目前是不可能的。保存模型时,实际上是序列化由特定算法实现的对象。此类可以包含学习算法使用的任意状态变量。因此,它只能反序列化回同一类的实例

理论上,Weka可以提供一个接口,允许学习算法将模型输出为纯Java代码,而不是二进制序列化实例,但目前还没有。我目前使用的是专有的ML框架,它实际上具有这些接口,许多算法如决策树和回归都将输出模型作为C++代码,您可以直接添加到项目中,消除运行时依赖性。p> 有关Weka模型序列化的更多信息:


如果您对可视化感兴趣,请参见以下内容:

不,这在目前的Weka中是不可能实现的。保存模型时,实际上是序列化由特定算法实现的对象。此类可以包含学习算法使用的任意状态变量。因此,它只能反序列化回同一类的实例

理论上,Weka可以提供一个接口,允许学习算法将模型输出为纯Java代码,而不是二进制序列化实例,但目前还没有。我目前使用的是专有的ML框架,它实际上具有这些接口,许多算法如决策树和回归都将输出模型作为C++代码,您可以直接添加到项目中,消除运行时依赖性。p> 有关Weka模型序列化的更多信息:


如果您对可视化感兴趣,请参见以下内容:

我需要证明我制作的模型文件是我从数据集生成的实际文件

我建议修改分类器的weka源代码,并执行以下操作

  • 添加DataSourceHashKey字段
  • 无论何时生成分类器,都要获取数据集(arff文件)的一部分,并将该值设置为DataSourceHashKey
  • 当您反序列化模型类时,此DataSourceHashKey将对您可用。让我们称之为ModelDataSourceHashKey
  • 在运行分类器之前,从数据源(arff文件)生成新的DataSourceHashKey,我们将其称为CurrentDataSourceHashKey
  • 由于哈希函数的属性,ModelDataSourceHashKey和CurrentDataSourceHashKey必须相等。如果不是,则新数据源与此模型生成的数据源不同,即使这种差异只是一个空间
  • 我还要补充以下几点。前面的答案基本上是正确的,但它遗漏了一些要点

    weka的一些分类器可以生成java代码,请参见。以下摘自该链接

    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). 
    
    翻译如果分类器或过滤器实现了接口,您可以获得分类器/过滤器的java代码版本,请参见下文

    weka.classifiers 
    Interface Sourcable
    
    All Known Implementing Classes:
    AdaBoostM1, DecisionStump, J48, LogitBoost, OneR, REPTree, ZeroR
    
    对于所有其他分类器,模型文件都是可用的。请注意,序列化是一个java概念,而不是weka概念,因此所有限制都属于java。您所要求的可以按照以下步骤执行


    但我认为为您的分类器实现Sourcable接口将比遵循这条路径更容易

    您要执行以下操作

    我需要证明我制作的模型文件是我从数据集生成的实际文件

    我建议修改分类器的weka源代码,并执行以下操作

  • 添加DataSourceHashKey字段
  • 无论何时生成分类器,都要获取数据集(arff文件)的一部分,并将该值设置为DataSourceHashKey
  • 当您反序列化模型类时,此DataSourceHashKey将对您可用。让我们称之为ModelDataSourceHashKey
  • 在运行分类器之前,从数据源(arff文件)生成新的DataSourceHashKey,我们将其称为CurrentDataSourceHashKey
  • 由于哈希函数的属性,ModelDataSourceHashKey和CurrentDataSourceHashKey必须相等。如果不是,则新数据源与此模型生成的数据源不同,即使这种差异只是一个空间
  • 我还要补充以下几点。前面的答案基本上是正确的,但它遗漏了一些要点

    weka的一些分类器可以生成java代码,请参见。以下摘自该链接

    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). 
    
    翻译如果分类器或过滤器实现了接口,您可以获得分类器/过滤器的java代码版本,请参见下文

    weka.classifiers 
    Interface Sourcable
    
    All Known Implementing Classes:
    AdaBoostM1, DecisionStump, J48, LogitBoost, OneR, REPTree, ZeroR
    
    对于所有其他分类器,模型文件都是可用的。请注意,序列化是一个java概念,而不是weka概念,因此所有限制都属于java。您所要求的可以按照以下步骤执行


    但我认为为您的分类器实现Sourcable接口将比遵循这条路径更容易

    谢谢,我实际上对模型的Java代码版本更感兴趣,以便证明模型确实存在exis