zoukankan      html  css  js  c++  java
  • WEKA从sqlite数据库文件导入数据

    1.编写代码的方式

    只需要在java工程中导入weka.jar和sqlite-jdbc-3.8.7.jar两个jar包, weka.jar可以在weka的安装路径下找到, sqlite-jdbc-3.8.7.jar下载路径http://download.csdn.net/detail/gjh460293451/8371289

    然后编写测试代码:

    import weka.classifiers.Classifier;
    import weka.classifiers.trees.J48;
    import weka.core.Instances;
    import weka.core.converters.DatabaseLoader;
    
    public class Test1 {
    
        public static void main(String[] args) throws Exception {
            Classifier m_classifier = new J48();
            try {
                DatabaseLoader loader = new DatabaseLoader();
                //sqlite数据库文件位置,用户名密码可以空
                loader.setSource("jdbc:sqlite://D:/work/preload/new_data/SampleInfo.db", "", "");
                //查询语句
                loader.setQuery("select * from SampleInfo");
    
                Instances instancesTrain = loader.getDataSet(); // 读入训练文件
                //用 "pkgname" 作为分类属性,设置分类属性列 
                    instancesTrain.setClassIndex(10);
                int sum = instancesTrain.numInstances(); //数据条数
                System.out.println("data number :" + sum);
    //            System.out.println(instancesTrain);
                double right = 0.0f;
                m_classifier.buildClassifier(instancesTrain); // 训练  
    
                for (int i = 0; i < sum; i++)// 测试分类结果
                {
                    if (m_classifier.classifyInstance(instancesTrain.instance(i)) == instancesTrain
                            .instance(i).classValue())// 如果预测值和答案值相等(测试语料中的分类列提供的须为正确答案,结果才有意义)
                    {
                        right++;// 正确值加1
                    }
                }
                System.out.println("J48 classification precision:" + (right / sum));  
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }

    结果输入为

    data number :1631
    J48 classification precision:0.592274678111588

    2.通过GUI工具访问SQLite数据库文件

    首先需要先添加sqlite-jdbc-3.8.7.jar到CLASSPATH

    要正常访问数据库,根据计算机的实际情况正确修改配置文件是关键。Weka的配置文件名称为DatabaseUtils.props,位于weka.experiment包中。可以从weka.jar或weka-src.jar归档文件获取该配置文件。具体做法是,使用解压缩工具将归档文件解开,在weka/experiment子目录可以找到DatabaseUtils.props配置文件。本书直接在该配置文件的基础上进行修改。
    为了方便用户,Weka对常用数据库都提供对应配置文件,在对应配置文件上进行修改要方便得多。例如:
    (1) DatabaseUtils.props.hsql:适用HSQLDB 数据库;
    (2) DatabaseUtils.props.msaccess:适用MS Access数据库;
    (3) DatabaseUtils.props.mssqlserver:适用MS SQL Server 2000数据库;
    (4) DatabaseUtils.props.mssqlserver2005:适用MS SQL Server 2005数据库;
    (5) DatabaseUtils.props.mysql:适用MySQL数据库;
    (6) DatabaseUtils.props.odbc:适用ODBC/JDBC桥连接的数据库;
    (7) DatabaseUtils.props.Oracle:适用Oracle 10g数据库;
    (8) DatabaseUtils.props.postgresql:适用PostgreSQL 7.4数据库;
    (9) DatabaseUtils.props.sqlite3:适用sqlite 3.x数据库。

    如下图所示: 这里写图片描述

    (推荐)第一种方法比较简单,直接修改DatabaseUtils.props.sqlite3文件里面的URL路径到需要访问的db文件路径。

    # database URL
    jdbcURL=jdbc:sqlite://D:/work/preload/new_data/SampleInfo.db

    然后打开Weka Explorer -->Open DB -->Switch database setup(第一行最右边的按钮) -->选择配置文件DatabaseUtils.props.sqlite3(注意File of Type: All Files)。 再点击第二个按钮尝试连接数据库,连接成功后,

    Query部分写入sql语句, 点击execute,点击OK,加载数据成功。

    (不推荐)另一种方法是修改weka.jar中的配置文件(weka/experiment/DatabaseUtils.props),替换成附件DatabaseUtils.props.sqlite3中的内容,同样注意修改URL路径,然后重新打包运行。

  • 相关阅读:
    XHR——XMLHttpRequest对象
    原生JS弹出层详解,从简单到复杂
    php面向对象(OOP)编程完全教程
    css hack
    Ajax+php 详细分析 (没完整)
    Zend Studio 12 生成 WSDL
    PHP WebService/Soap接口生成方法。
    php soap客户端调试实例及调试
    简单数据结构之栈模拟
    经典算法之约瑟夫问题
  • 原文地址:https://www.cnblogs.com/scarecrow-blog/p/6740830.html
Copyright © 2011-2022 走看看