zoukankan      html  css  js  c++  java
  • Weka训练模型的存取

    因为WEKA中所有分类器都实现了Serializable,所以只需要用java的ObjectOutputStream就可以实现了。

        /**
         * 存储model
         * 
         * @param model
         *            训练过的分类器 例如J48
         * @param ModelPath
         *            存储路径
         */
        private void persistModel(Classifier model, String ModelPath) {
            ObjectOutputStream oos = null;
            try {
                oos = new ObjectOutputStream(new FileOutputStream(ModelPath));
                oos.writeObject(model);
                oos.flush();
                oos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 加载model
         * 
         * @param ModelPath
         *            存储路径
         * @return 分类器
         */
        private Classifier reloadPersistModel(String ModelPath) {
            ObjectInputStream ois = null;
            try {
                ois = new ObjectInputStream(new FileInputStream(new File(ModelPath)));
                Classifier model = (Classifier) ois.readObject();
                ois.close();
                return model;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

    调用的地方

                    Classifier m_classifier = new J48();
                    m_classifier.buildClassifier(instances);
                    // 存储model
                    persistModel(m_classifier, "/data/data/com.example.wekatest/model");
                    // 读取model
                    Classifier m_classifier2 = reloadPersistModel("/data/data/com.example.wekatest/model");
                    Log.d(LOG_TAG, m_classifier2.toString());
  • 相关阅读:
    21.扩展
    20.嵌套类型
    19.类型转换
    18.错误处理
    17.可选链
    16.ARC
    15.析构函数
    14.构造函数
    13.继承
    12.下标
  • 原文地址:https://www.cnblogs.com/scarecrow-blog/p/6769760.html
Copyright © 2011-2022 走看看