如何使用weka连接MySql

671 阅读2分钟

最近在和朋友使用weka做数据挖掘,想将weka与数据库MySQL连接,在网上找了很多帖子,很多都是复制粘贴,漏洞百出。本人综合自己的配置过程将步骤重新整理,在此做一下总结:

1、安装weka和mysql(这里不细讲,请自行百度)

2、下载连接驱动程序

weka连接mysql数据库需要连接驱动程序
mysql-connector-java-5.1.45.zip,
下载地址https://dev.mysql.com/downloads/file/?id=474258
下载完后,放在weka的安装目录下
(我放在了D:\Program Files\wekahanhuaban\lib中)lib文件夹需要自己新建,
将jar包复制到lib文件夹下,
并且在JDK的安装目录中jdk1.7.0_67\jre\lib
下也放mysql-connector-java-5.1.45-bin.jar

3、设置环境变量

此处环境变量的配置和JDK一样,首先新建
WEKA_HOME=D:\Program Files\wekahanhuaban

修改Path,在path的最前面加上
%WEKA_HOME%\lib\mysql-connector-java-5.1.45-bin.jar;

4、修改weka.jar包

这里只是稍微修改配置文件,所以只要使用解压工具打开:weka安装目录\weka.jar\weka\experiment里找到DatabaseUtils.props将其备份为DatabaseUtils.props.bak然后将DatabaseUtils.props.mysql重命名为DatabaseUtils.props,并修改其内容:

# JDBC driver (comma-separated list) jdbcDriver=jdbcDriver=com.mysql.jdbc.Driver

string, getString() = 0; --> nominal

boolean, getBoolean() = 1; --> nominal

double, getDouble() = 2; --> numeric

byte, getByte() = 3; --> numeric

short, getByte()= 4; --> numeric

int, getInteger() = 5; --> numeric

long, getLong() = 6; --> numeric

float, getFloat() = 7; --> numeric

date, getDate() = 8; --> date

text, getString() = 9; --> string

time, getTime() = 10; --> date

BigDecimal,getBigDecimal()=11; -->nominal

TINYINT=3

SMALLINT=4

SHORT=5

INTEGER=5

INT=5

INT_UNSIGNED=6

BIGINT=6

LONG=6

REAL=7

NUMERIC=2

DECIMAL=2

FLOAT=2

DOUBLE=2

CHAR=0

TEXT=0

VARCHAR=0

LONGVARCHAR=9

BINARY=0

VARBINARY=0

LONGVARBINARY=9

BIT=1

BLOB=8

DATE=8

TIME=8

DATETIME=8

TIMESTAMP=8

保存。

5、修改runWeka.ini文件

打开weka安装目录中runWeka.ini文件,到文件尾部在文件尾部添加驱动器的引用(之前下载的驱动文件位置)

cp=%CLASSPATH%;D:/Program Files/wekahanhuaban/lib/mysql-connector-java-5.1.45-bin.jar

保存后运行weka 1、点击 打开数据库

2、点击设置用户名和密码

3、在URL框中输入:jdbc:mysql://localhost:3306/mysql
(localhost是服务器名称本机可以写localhost也可以写IP地址,远程连接必须写IP地址,3306是MySQL的端口号,默认是3306最后的mysql是要访问的数据库名,自行修改,确保要访问的数据库存在) 输入用户名和密码后,点击ok,

4点击如下连接按钮(1处):

如果在下面的info框中,显示connectingto: jdbc:mysql://localhost:3306/mysql = true,则连接成功;否则失败。

最后要想用weka打开数据库中的数据还需要在中间的query中写SQL语句点击查询(2处)查询出结果