Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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_Serialization_Weka_Random Forest - Fatal编程技术网

更改源代码后,Java中的Weka无法加载到模型中

更改源代码后,Java中的Weka无法加载到模型中,java,serialization,weka,random-forest,Java,Serialization,Weka,Random Forest,最近,我正在研究Java的一些Random Forest模型。我的教授让我加载她给我的随机森林模型,并打印出它的规则 因为我需要打印详细的规则(我认为这是随机林没有提供的功能),所以我必须更改一些代码。但是,在我更改了代码之后,Java序列化不允许我完美地加载模型,总是存在一些空指针异常 我认为,根据Javadoc,如果我只更改了源代码的一些小部分,我应该被允许加载到模型中,为了最小化更改,我只将一些private或protected更改为public。这样我就可以访问类的详细信息,但即使这种更

最近,我正在研究
Java
的一些
Random Forest
模型。我的教授让我加载她给我的
随机森林
模型,并打印出它的规则

因为我需要打印详细的规则(我认为这是
随机林
没有提供的功能),所以我必须更改一些代码。但是,在我更改了代码之后,Java序列化不允许我完美地加载模型,总是存在一些
空指针异常

我认为,根据
Java
doc,如果我只更改了源代码的一些小部分,我应该被允许加载到模型中,为了最小化更改,我只将一些
private
protected
更改为
public
。这样我就可以访问类的详细信息,但即使这种更改也不能令人满意

我希望有人能给我一些关于这些的线索:

  • 如果我只将一些
    受保护的
    更改为
    公共
    ,则可以执行反序列化,对吗?
    另外,我想如果我仍然有一些
    受保护的
    未更改,可能会出现一些问题,但这肯定会引起编译错误,对吗?我是否需要在代码中搜索一些潜在的未更改的
    受保护的

  • 有没有更好的方法来打印
    随机林
    规则

  • 我已经研究这个问题两周了,我真的希望有人能帮我解决这个问题

    除此之外,源代码为:

     int maxIndex = Utils.maxIndex(m_Distribution[0]);
    
    它位于这些代码的第656行

    除了将
    protected
    更改为
    public
    之外,我没有做任何更改,但我在一个新包中添加了另一个类,以按以下代码打印规则:

    if (m_classifier.m_bagger.m_Classifiers == null) {
            System.out.println("Bagging: No model built yet.");
        } 
    else {
            StringBuffer text = new StringBuffer();
            text.append("All the base classifiers: \n\n");
            for (int i = 0; i < m_classifier.m_bagger.m_Classifiers.length; i++)
                if (m_classifier.m_bagger.m_Classifiers[i] == null) {
                    System.out.println("Oh, aaaaa");
                } else {
                    text.append(m_classifier.m_bagger.m_Classifiers[i]
                            .toString() + "\n\n");
                }
            }
            //System.out.println(text.toString());
        }
    
    if(m_-classifier.m_-bagger.m_-Classifiers==null){
    System.out.println(“打包:还没有建立模型”);
    } 
    否则{
    StringBuffer text=新的StringBuffer();
    append(“所有基本分类器:\n\n”);
    对于(int i=0;i
    包括引发异常的代码。并添加详细信息来解释您的尝试。通过将方法从“受保护”更改为“公共”,您是否试图访问单个随机树?这似乎是开始打印规则的合乎逻辑的做法。如果是这样的话,您能否编写自己的方法来获取“m_分类器”,并将其添加到Weka的RandomForest类中?@Renaissance谢谢,我已将代码和我的代码粘贴在这里。@Walter谢谢,是的,我尝试访问每棵树。我只是把代码放在上面,请看一下