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路径,然后重新打包运行。
WEKA从sqlite数据库文件导入数据的更多相关文章
- 启动Android App时,动态将Sqlite数据库文件导入到手机中类方法
package com.aqioo.db; import java.io.File; import java.io.FileOutputStream; import java.io.InputStre ...
- sqlite数据库文件导入到sqlserver 2016-03-26 21:55 1292人阅读 评论(1) 收藏
最近在公司做项目,需要做两个版本,都是cs的,然后要求是一个单机版,自带数据库,另一个要进行局域网内的连接,所以公司的大牛设计是,局域网版的用sqlserver2008,单机版的则用sqlite.然后 ...
- SharedPreferences数据、openFileOutput文件、SQLite数据库文件存储位置
在模拟器中: SharedPreferences将XML文件保存在/data/data/<package name>/shared_prefs目录下, openFileOutput方法将文 ...
- 修复 SQLite 数据库文件
目 录 第1章 说明 1 1 下载SQLite Tools 1 2 运行 2 第1章 说明 笔者编写的一个程序,无法往 SQLite 数据库文件里写数据.使用SQLiteSpy打开该 ...
- 【转】Phonegap离线调用SQLite数据库文件
按:不可多得的好文章,转过来以免源丢失 文章来源:http://liuwei.co/index.php/default/The-quickest-way-to-execute-many-sql-for ...
- 用SQLSERVER里的bcp命令或者bulkinsert命令也可以把dat文件导入数据表
用SQLSERVER里的bcp命令或者bulkinsert命令也可以把dat文件导入数据表 下面的内容的实验环境我是在SQLSERVER2005上面做的 之前在园子里看到两篇文章<C# 读取纯真 ...
- ArcCatalog中通过ArcSDE向Oracle数据库中导入数据
将数据导入到Oracle指定的表空间的具体内容如下: 首先,在ArcCatalog中建立指定表空间的数据库连接(要以指定表空间的用户登录): 然后,在ArcCatlog中定位到数据源,选中并拷贝图层; ...
- Selenium(九)测试用例数据分离与从文件导入数据
一.测试用例数据与代码分离 1.从之前的脚本来看,我还是把数据写在了脚本中,这样脚本的通用性很差.全局的数据其实可以从数据库.文本文件.Excel中直接读取. 2.代码和用户数据分离: 3.数据设计- ...
- android 一个SQLite数据库多个数据表的基本使用框架 (带demo)
android 一个SQLite数据库多个数据表(带demo) 前言 demo演示 一.搭建 二.建立实体类 三.建立数据库操作类 ...
随机推荐
- ARM ELF函数重定位
ARM ELF的函数重定位与x86是一致的,但由于汇编指令不同,再鼓捣一遍. 示例代码: #include <stdio.h> #include <stdlib.h> int ...
- python linecache模块读取文件的方法
转自: python linecache模块读取文件 在Python中,有个好用的模块linecache,该模块允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单个文件读取多行. l ...
- HPU第三次积分赛-D:Longest Increasing Subsequence(DP)
Longest Increasing Subsequence 描述 给出一组长度为n的序列,a1,a2,a3,a4...an, 求出这个序列长度为k的严格递增子序列的个数 输入 第一行输入T ...
- vim 的编辑模式 命令模式
1.vim的编辑模式 进入编辑模式 按键: a i o a: 表示在光标当前的,后面开始插入,写数据 i : 则表示 前面 . o : 表面在光标当前的,下一行开始写入数据. O : 大写的 ...
- Plant(𝐶𝑜𝑑𝑒𝐹𝑜𝑟𝑐𝑒𝑠 − 185𝐴)
#include<iostream> #include<cstring> using namespace std; ,mod=; struct Matrix { long lo ...
- java路径
System.out.println(ResourceUtils.getURL("classpath:").getPath());
- python selenium自动化点击页面链接测试
python selenium自动化点击页面链接测试 需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口跳转,并且是本站内的链接,前往到链接页面之后在通过后退返回 ...
- python中进制之间的转换
参考于:http://www.360doc.com/content/14/0428/11/16044571_372866302.shtml 在此非常感谢! ~~~~~~~~~~~~~~~~~~~~~ ...
- 使用JQuery反向选择checkbox
HTML代码: <input id="haspda" type="checkbox" name="haspda" value=&quo ...
- 【shell编程】之基础知识-函数
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用. shell中函数的定义格式如下: [ function ] funname [()] { action; [return ...