最近在使用weka做数据挖掘,想讲weka与数据库MySQL连接,在网上找了很多帖子,很多都不是太详细。本人综合自己的配置过程将步骤重新整理,希望对搞weka的人来说有一点帮助。
1、安装weka和mysql(本人默认你已经安装了weka和MySQL)
2、下载连接驱动程序
weka连接mysql数据库需要连接驱动程序mysql-connector-java-5.1.6-bin.jar,下载地址:http://download.csdn.net/download/u012963068/8223351
下载完后,在weka的安装目录下(我放在了D:\Program Files中)D:\Program Files\Weka-3-7新建lib文件夹,将jar包复制到lib文件夹下,并且在JDK的安装目录中jdk1.7.0_67\jre\lib下也放mysql-connector-java-5.1.6-bin.jar
3、设置环境变量
此处环境变量的配置和JDK一样,首先新建WEKA_HOME=D:\Program Files\Weka-3-7
修改Path,在path的最前面加上%WEKA_HOME%\lib\mysql-connector-java-5.1.6-bin.jar;使path=%WEKA_HOME%\lib\mysql-connector-java-5.1.6-bin.jar;%JAVA_HOME%\jre\lib\ext\mysql-connector-java-5.1.6-bin.jar;……
4、修改weka.jar包
这里只是稍微修改配置文件,所以只要使用解压工具打开在\Weka-3-7\weka.jar\experiment里找到DatabaseUtils.props将其备份为其他名字然后将DatabaseUtils.props.mysql重命名为DatabaseUtils.props,并修改其内容:
# JDBC driver (comma-separated list)
jdbcDriver=jdbcDriver=com.mysql.jdbc.Driver
# specific data types,具体的数据类型修改如下,主要是去掉注释
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
其他的暂时无需修改,保存。
网上的很多文章到这一步就去运行weka,我也试了一下发现没有办法找到jdbc.driver,没办法连接上数据库。结果我再查资料,再做如下的操作,就可以正常连接了。
5、打开runWeka.ini文件,到文件尾部
在文件尾部添加驱动器的引用(之前下载的驱动文件位置)
cp=%CLASSPATH%;D:/Programs/Weka-3-7/lib/mysql-connector-java-5.1.6-bin.jar
保存后运行weka
1、 点击
2、 点击图中圈住的地方
3、在URL框中输入:jdbc:mysql://localhost:3306/mysql (localhost是服务器名称本机可以写localhost也可以写IP地址,远程连接必须写IP地址,3306是MySQL的端口号,默认是3306最后的mysql是要访问的数据库名,自行修改,确保要访问的数据库存在)
输入用户名和密码后,点击ok,
4点击如下连接按钮:
如果在下面的info框中,显示connectingto: jdbc:mysql://localhost:3306/mysql = true,则连接成功;否则失败。
最后要想用weka打开数据库中的数据还需要在中间的query中写SQL语句才可以哦!