如何在Weka-for-Android中反序列化已保存的模型

时间:2013-05-08 00:03:25

标签: android weka random-forest

我在从SD卡加载已保存的模型时遇到问题。 在Weka的官方维基中,我找到了两种方法来反序列化序列化模型,但是它们不适用于Android。

//First Method
RandomForest rf = (RandomForest) weka.core.SerializationHelper.
    read(Environment.getExternalStorageDirectory().getPath() + "/BC.model");

//Second Method
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
    Environment.getExternalStorageDirectory().getPath() + "/BC.model"));
RandomForest rf = new RandomForest();
rf = (RandomForest) ois.readObject();

我在logcat中收到此错误:

java.io.InvalidClassException: 
    weka.classifiers.trees.RandomForest; Incompatible class (SUID): 
    weka.classifiers.trees.RandomForest

2 个答案:

答案 0 :(得分:1)

在android中,你只能加载一个由你的Android APP序列化的分类器模型。否则,由于Serializable UID不兼容,您将收到异常。

答案 1 :(得分:0)

        InputStream is = this.getAssets().open("example.model");
        ObjectInputStream ois = new ObjectInputStream(is);
        cls = (Classifier) ois.readObject();
        ois.close();

您可能希望将模型放在assets文件夹中。如果有效,请告诉我。