Weka学习之预处理连接MySql(二)
载入数据
(一)打开文件
(二) 打开url
(三) 打开数据库
(四)从一些数据生成器(DataGenerators)中生成人造数据
这篇主要写(三)中的连接mySql
网上教程很多这里写个简单步骤
推荐一篇文章
http://blog.csdn.net/senaku/article/details/2225943
下载必要的工具 mysql驱动(有的就别下了)
http://pan.baidu.com/share/link?shareid=2530503288&uk=1010575044
weka 3.6.10的(无jre版)
http://pan.baidu.com/share/link?shareid=2578038226&uk=1010575044
jdk
http://pan.baidu.com/share/link?shareid=2585337924&uk=1010575044
下好安装就不介绍了,先安装jdk,配置环境变量,在安装weka。
配置环境变量
JAVA_HOME
D:\Program Files\Java\jdk1.7.0_09
ClassPath
.
下载完后,在weka的安装目录下"D:\Program Files\Weka-3-6"新建lib文件夹,将jar包复制到lib文件夹下,并且在"D:\Program Files\Java\jdk1.7.0_09\jre\lib\ext"下也放mysql-connector-java-5.1.6-bin.jar
设置环境变量
JAVA_HOME
D:\Program Files\Java\jdk1.7.0_09
WEKA_HOME
D:\Program Files\Weka-3-6
ClassPath
.;%WEKA_HOME%\lib\mysql-connector-java-5.1.26-bin.jar;%JAVA_HOME%\jre\lib\ext\mysql-connector-java-5.1.26-bin.jar;
设置完成后,weka就能找到放在\lib中的数据库jar包了.
在C:\Program Files\Weka-3-6\weka.jar\experiment里找到DatabaseUtils.props.mysql,将其名字改成DatabaseUtils.props,替换原有的DatabaseUtils.props文件,并将其修改文件里的以下内容:
# Database settings for MySQL 3.23.x, 4.x # # General information on database access can be found here: # http://weka.wikispaces.com/Databases # # url: http://www.mysql.com/ # jdbc: http://www.mysql.com/products/connector/j/ # author: Fracpete (fracpete at waikato dot ac dot nz) # version: $Revision: 5836 $ # JDBC driver (comma-separated list) #jdbcDriver=org.gjt.mm.mysql.Driver jdbcDriver=com.mysql.jdbc.Driver # database URL #jdbcURL=jdbc:mysql://server_name:3306/database_name jdbcURL=jdbc:mysql://localhost:3306/rtest # 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 # 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 TINYINT=3 SMALLINT=4 #SHORT=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=9 DATE=8 TIME=8 DATETIME=8 TIMESTAMP=8 # other options CREATE_DOUBLE=DOUBLE CREATE_STRING=TEXT CREATE_INT=INT CREATE_DATE=DATETIME DateFormat=yyyy-MM-dd HH:mm:ss checkUpperCaseNames=false checkLowerCaseNames=false checkForTable=true # All the reserved keywords for this database # Based on the keywords listed at the following URL (2009-04-13): # http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-reservedwords-5-0.html Keywords=\ ADD,\ ALL,\ ALTER,\ ANALYZE,\ AND,\ AS,\ ASC,\ ASENSITIVE,\ BEFORE,\ BETWEEN,\ BIGINT,\ BINARY,\ BLOB,\ BOTH,\ BY,\ CALL,\ CASCADE,\ CASE,\ CHANGE,\ CHAR,\ CHARACTER,\ CHECK,\ COLLATE,\ COLUMN,\ COLUMNS,\ CONDITION,\ CONNECTION,\ CONSTRAINT,\ CONTINUE,\ CONVERT,\ CREATE,\ CROSS,\ CURRENT_DATE,\ CURRENT_TIME,\ CURRENT_TIMESTAMP,\ CURRENT_USER,\ CURSOR,\ DATABASE,\ DATABASES,\ DAY_HOUR,\ DAY_MICROSECOND,\ DAY_MINUTE,\ DAY_SECOND,\ DEC,\ DECIMAL,\ DECLARE,\ DEFAULT,\ DELAYED,\ DELETE,\ DESC,\ DESCRIBE,\ DETERMINISTIC,\ DISTINCT,\ DISTINCTROW,\ DIV,\ DOUBLE,\ DROP,\ DUAL,\ EACH,\ ELSE,\ ELSEIF,\ ENCLOSED,\ ESCAPED,\ EXISTS,\ EXIT,\ EXPLAIN,\ FALSE,\ FETCH,\ FIELDS,\ FLOAT,\ FLOAT4,\ FLOAT8,\ FOR,\ FORCE,\ FOREIGN,\ FROM,\ FULLTEXT,\ GOTO,\ GRANT,\ GROUP,\ HAVING,\ HIGH_PRIORITY,\ HOUR_MICROSECOND,\ HOUR_MINUTE,\ HOUR_SECOND,\ IF,\ IGNORE,\ IN,\ INDEX,\ INFILE,\ INNER,\ INOUT,\ INSENSITIVE,\ INSERT,\ INT,\ INT1,\ INT2,\ INT3,\ INT4,\ INT8,\ INTEGER,\ INTERVAL,\ INTO,\ IS,\ ITERATE,\ JOIN,\ KEY,\ KEYS,\ KILL,\ LABEL,\ LEADING,\ LEAVE,\ LEFT,\ LIKE,\ LIMIT,\ LINES,\ LOAD,\ LOCALTIME,\ LOCALTIMESTAMP,\ LOCK,\ LONG,\ LONGBLOB,\ LONGTEXT,\ LOOP,\ LOW_PRIORITY,\ MATCH,\ MEDIUMBLOB,\ MEDIUMINT,\ MEDIUMTEXT,\ MIDDLEINT,\ MINUTE_MICROSECOND,\ MINUTE_SECOND,\ MOD,\ MODIFIES,\ NATURAL,\ NOT,\ NO_WRITE_TO_BINLOG,\ NULL,\ NUMERIC,\ ON,\ OPTIMIZE,\ OPTION,\ OPTIONALLY,\ OR,\ ORDER,\ OUT,\ OUTER,\ OUTFILE,\ PRECISION,\ PRIMARY,\ PRIVILEGES,\ PROCEDURE,\ PURGE,\ READ,\ READS,\ REAL,\ REFERENCES,\ REGEXP,\ RELEASE,\ RENAME,\ REPEAT,\ REPLACE,\ REQUIRE,\ RESTRICT,\ RETURN,\ REVOKE,\ RIGHT,\ RLIKE,\ SCHEMA,\ SCHEMAS,\ SECOND_MICROSECOND,\ SELECT,\ SENSITIVE,\ SEPARATOR,\ SET,\ SHOW,\ SMALLINT,\ SONAME,\ SPATIAL,\ SPECIFIC,\ SQL,\ SQLEXCEPTION,\ SQLSTATE,\ SQLWARNING,\ SQL_BIG_RESULT,\ SQL_CALC_FOUND_ROWS,\ SQL_SMALL_RESULT,\ SSL,\ STARTING,\ STRAIGHT_JOIN,\ TABLE,\ TABLES,\ TERMINATED,\ THEN,\ TINYBLOB,\ TINYINT,\ TINYTEXT,\ TO,\ TRAILING,\ TRIGGER,\ TRUE,\ UNDO,\ UNION,\ UNIQUE,\ UNLOCK,\ UNSIGNED,\ UPDATE,\ UPGRADE,\ USAGE,\ USE,\ USING,\ UTC_DATE,\ UTC_TIME,\ UTC_TIMESTAMP,\ VALUES,\ VARBINARY,\ VARCHAR,\ VARCHARACTER,\ VARYING,\ WHEN,\ WHERE,\ WHILE,\ WITH,\ WRITE,\ XOR,\ YEAR_MONTH,\ ZEROFILL # The character to append to attribute names to avoid exceptions due to # clashes between keywords and attribute names KeywordsMaskChar=_ #flags for loading and saving instances using DatabaseLoader/Saver nominalToStringLimit=50 idColumn=auto_generated_id
运行weka,选择open DB,选择user,我所用的用户名和密码分别是root(安装数据库时默认的,我没改就用的root)和mysql(安装mysql时设置的密码),点击connect,info显示connecting to:jdbc:mysql://localhost:3306/myweka = true,代表连接成功
连上后在"Query"一栏中写入SQL查询语句,例如
select * from user;
然后点右边的"Excute"按钮。(如果连接数据库不成功是无法Excute的)
"Result"一栏中会显示有关结果,满意后点击最下方的"OK"按钮。Explorer就从数据库中载入数据集了。
********************************************
我自己在操作的时候遇到一个INT UNSIGNED dataType没有定义的问题,解决方法:
有时候点击OK 的时候提示没有dataType原因是weka不识别,你可以在上面的文件里添加对应的数据类型即可。
**************************************************************
其他的数据库操作步骤基本一致,就不介绍了。