下载Weka 3.8
安装SQL Server 2008R2,和SQL 管理平台。
1.sqljdbc_3.0。下载数据库驱动,下载的必须是SQL Server 2008R2 的jdbc驱动。
要注意的是SQL SERVER2008和SQL SERVER2008 R2不一样。SQLSERVER 2008的可以用2.0,然后SQLSERVER 2008 R2只能用3.0.否则报错呀。
Microsoft SQL Server JDBC Driver 3.0下载下来,解压下来有2个jar,一个是sqljdbc.jar,一个是sqljdbc4.jar。其中sqljdbc是为JDK1.5用的,而JDK1.6必须用sqljdbc4。否则出错!这里我们用sqljdbc4.jar。
2.配置classpath。设置classpath环境变量指向该驱动。
如:classpath=D:\Study\SQLjdbc\sqljdbc_3.0\chs\sqljdbc4.jar;(这个路径是sqljdbc4.jar所在的路径)
3.关闭Weka,启动数据库,建立名称为weka的数据库,为数据库建立一个名称为weka的用户,密码自定,并为该用户赋予足够的权限。
利用SQL Server数据库管理平台 建立数据库与用户具体操作见:
https://jingyan.baidu.com/article/86fae346ba946f3c49121a0e.html
4.要正常访问数据库,根据计算机的实际情况正确修改配置文件是关键。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数据库。
我的操作:利用360压缩打开(!没有解压)找到DatabaseUtils.props,如下图所示:
拖拽到桌面上编辑:
程序清单1.2 原DatabaseUtils.props文件内容
# The comma-separated list of jdbc drivers to use
#jdbcDriver=RmiJdbc.RJDriver,jdbc.idbDriver
#jdbcDriver=jdbc.idbDriver
#jdbcDriver=RmiJdbc.RJDriver,jdbc.idbDriver,org.gjt.mm.mysql.Driver,com.mckoi.JDBCDriver,org.hsqldb.jdbcDriver
#jdbcDriver=org.gjt.mm.mysql.Driver
# The url to the experiment database
#jdbcURL=jdbc:rmi://expserver/jdbc:idb=experiments.prp
jdbcURL=jdbc:idb=experiments.prp
#jdbcURL=jdbc:mysql://mysqlserver/username
把上面的
#jdbcDriver=org.gjt.mm.mysql.Driver
#jdbcURL=jdbc:mysql://mysqlserver/username
改成:jdbcDriver=com.microsoft.sqlserver.jdbc.SQLServerDriver(上面的有个#,一定要记得去掉。我忘记去掉,结果折腾了很久)
jdbcURL=jdbc:sqlserver://localhost:1433;databaseName=weka(注意每种数据库连接URL写法不一样!)
之后,把更改号的文件,拖拽到上图中,替换原来的DatabaseUtils.props。
几种常见的数据库连接URL写法见参考:http://blog.csdn.net/u014726937/article/details/52786502
注意: Weka只会去寻找名称为DatabaseUtils.props的配置文件,如果用户想以其余配置文件中的一个(如DatabaseUtils.props.mysql)作为模板,在此基础上进行修改,一定记住要先改名。
如果读者使用不同的数据库,或者使用不同的端口号,请根据具体的数据库配置,设置这两个参数。
完成DatabaseUtils.props文件的设置后,必须放在如下三个固定位置之一,Weka才能找到。
(1) 当前目录。直接放在Weka 3.7的安装目录中。
(2) 用户目录中。如果使用Windows的用户不知道自己的用户目录,可以在命令行输入如下命令:
echo %USERPROFILE% 就可以得到用户目录的路径。Weka 3.7.2以下的版本直接将配置文件放在用户目录中,而Weka 3.7.2以上的版本则需要将配置文件放在用户目录下的wekafiles/ props子目录中。
(3) 类路径中。通常是weka.jar文件。
注意: Weka也是按上述顺序去查找配置文件的,找到后就不再进行查找。因此前面位置优先于后面位置。
5.配置RunWeka.ini
打开,最后一行编写cp=%classpath% (这个classpath,与系统环境变量的classpath,要一样,大小写也不能错。我就是自己配置的classpath,而RunWeka.ini最后一行的是大写的CLASSPATH,我没有改。结果导致无法连接数据库。显示的错误是exception: java.sql.SQLException: Unable to find a suitable driver ......。更正过来就好了)
6.访问数据库
重新启动Weka。在Weka GUI 选择器中,单击右边的第一个按钮Explorer,启动探索者,单击探索者的第三个按钮Open DB,弹出如图1.18所示的SQL查看器窗口。注意到URL栏的内容,已经变成了前文修改的配置文件中jdbcURL的值。如下图所示:
单击按钮连接数据库,如果前面的设置无误,会在SQL查看器窗口的下部出现数据库已连接的提示,如下图示:
现在,需要从数据库中查询数据。由于我数据库没有录入数据所以无法演示了。若你已经将数据集导入到数据库中,因此只需要输入SQL语句,单击Execute按钮执行查询,就会出现查询结果。
我所采取的操作:
环境变量:classpath=D:\Study\SQLjdbc\sqljdbc_3.0\chs\sqljdbc4.jar;
DatabaseUtils.props文件中:
jdbcDriver=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbcURL=jdbc:sqlserver://localhost:1433;databaseName=weka
D:\Study\SQLjdbc\sqljdbc_3.0\chs\sqljdbc4.jar;写全路径绝对没问题。
二. 常见问题及解决办法
如果读者没有连接上数据库,不要着急。按如下顺序依次检查可能产生问题的设置:数据库驱动程序是否正确?CLASSPATH的设置是否正确?配置文件中jdbcDriver和jdbcURL两项配置是否正确拼写?配置文件是否放到正确位置?数据库用户名和密码是否正确?该数据库用户是否拥有足够权限?数据库是否已经启动(我测试好像,数据库没有打开,就无法连接)?等等。
若以上方法都未能解决问题,建议尝试修改RunWeka.ini配置文件,在weka\Weka-3-8目录下,将驱动jar文件的地址直接加入配置文件。
参考链接:
http://blog.csdn.net/u014726937/article/details/52786502
https://www.cnblogs.com/zhouf330/p/7889556.html
http://www.cnblogs.com/yuan2016/p/5358830.html
http://wandejun1012.iteye.com/blog/1197545http://blog.csdn.net/wuting3680278/article/details/69257658?locationNum=5&fps=1
袁梅宇. 数控挖掘与机器学习:WEKA应用技术与实践[M]. 清华大学出版社, 2016.