晚上好。我希望有人能帮我做这个。。。
-
我确保为mac、Intel安装了weka 2-8-5 azul zulu,因为ARM dmg安装程序似乎已损坏。我收到一条损坏的软件包消息,使用OS big sur 11.5测试版和MacBookPro M1。
-
我使用的是openjdk 11(AdoptOpenJDK-11.0.11+9(build11.0.11+9))
-
我安装了dmg,并将应用程序和weka文件夹复制到我的/Applications文件夹
-
我将我喜欢的JDBC驱动程序添加到了/Libraries/Java/Extensions(SQL Server、MySQL和MonetDB)中。
-
还将JDBC驱动程序添加到my/Users/Myname/JDBC文件夹中。(我在一些论坛上读到这篇文章)。
-
将/Users/Myname/wekafiles/props/DatabaseUtils.rops修改为如下。。。(尝试连接到在linux docker容器上运行的MS SQL Server Edge 19。我可以从Python、DBeaver和Azure Data Studio for Mac连接到SQL Server):
microsoft sql server 2005 express edition的数据库设置
有关数据库访问的一般信息可以在此处找到:
https://waikato.github.io/weka-wiki/databases/
url:http://www.microsoft.com/
jdbc:http://msdn2.microsoft.com/en-us/data/aa937724.aspx作者:fracpete
版本:$修订:15255$
jdbc驱动程序(逗号分隔列表)jdbcDriver=com.microsoft.sqlserver.jdbc.SQLServerDriver
数据库url
jdbc:sqlserver://localhost:1443;databaseName=MyDB;
特定数据类型string,getstring()=0-->标称的
布尔值,getboolean()=1-->标称的
double,getdouble()=2-->数字
字节,getbyte()=3-->数字
short,getbyte()=4-->数字
int,getinteger()=5-->数字
long,getlong()=6-->数字
float,getfloat()=7-->数字
日期,getdate()=8-->日期
text,getstring()=9-->字符串
时间,gettime()=10-->日期
时间戳,gettime()=11-->日期
varchar=0浮子=2tinyint=3int=5
手动添加的值
字符串=0bigint=6nvarchar=9小数=2位=1
其他选项
CREATE_DOUBLE=双精度CREATE_STRING=VARCHAR(8000)CREATE_INT=INTCREATE_DATE=日期时间日期格式=yyyy-MM-dd HH:MM:sscheckUpperCaseNames=falsecheckLowerCaseNames=falsecheckForTable=真实
此数据库的所有保留关键字
基于以下url中列出的关键字(2009-04-13):
http://msdn.microsoft.com/en-us/library/ms189822(SQL.90).aspx
关键字=
ADD、
ALL、
ALTER、
1AND、
2ANY、
AS、
3ASC、
>授权、
5BACKUP、
0BEGIN、BREAK、
Main BROWSE、
BULK、
BY、
CASCADE、
CASE、
CHECK、
1CHECKPOINT、2CLUSTERED、
3COALESCE、
COLLATE,
COLUMN,
COMMIT,
1COMPUTE,
CONSTRAINT,
2CONTAINS,
3CONTAINSTABLE,
CONTINUE、
CONVERT、
CREATE、
1CROSS、
2CURRENT_DATE、
3CURRENT_TIME、
CURRENT_IMESTAMP、
CURRENT_USER、
CURSOR、
DATABASE、
DBCC、
DEALLOCATE
分布式,
双重,
DROP,
1DUMP,
2ELSE,
3END,
5ERRLVL,
0ESCAPE,
EXCEPT、
EXEC、
EXECUTE、
1EXISTS、
2EXIT、
EXTERNAL、
FETCH、
FILE、
3FILLFACTOR、
5FOR、
>FOREING、
0FREETEXT、2FUNCTION、
GOTO、GRANT、GROUP、
Main HAVING、
1HOLDLOCK、IDENTITYCOL,
IDENTITY_INSERT,
IF,
1IN,
2INDEX,
3INNER,
INSERT,
INTERSECT,
INTO,
IS,
1JOIN,
2KEY,
5KILL,
3LEFT,
>LIKE,
0LINENO,
LOAD,
Main NATIONAL,NOCHECK,
NONCLUSTERED,
NOT,
NULL,OPENQUERY,
OPENROWSET,
OPENXML,
1OPTION,
2OR,
3ORDER,
>OUTER,
5OVER,
0PERCENT,
PIVOT,
PLAN、
PRECISION、
PRIMARY、
1PRINT、
2PROC、
3PROCEDURE、
0PUBLIC、
5RAISEROR、
>READ、
READTEXT、
RECONFIGURE、
REFERENCES、REPLICATION、
RESTORE、Main RETURN、
REVERT、
REVOKE、
RIGHT、ROWGUIDCOL,
规则,
SAVE,
1SCHEMA,
SECURITYAUDIT,
SELECT,
SESSION_USER、
SET、
SETUSER、
SHUTDOWN、
2SOME、
1STATISTICS、
3SYSTEM_USER,
TABLE、
>TABLESAMPLE、
5TEXTSIZE、
THEN、
TO、TRAN、
TRANSACTION、
TRIGGER、
TRUNCATE、TSEQUAL、
UNION、
UNPIVOT、
UPDATE,
UPDATETEXT,
USE,
USER,
VALUES,
VARYING,
VIEW,
WAITFOR,
WHEN,
WHERE,
WHILE,
1WITH,
2WRITETEXT要附加到属性名称以避免由于
关键字和属性名之间的冲突
关键字MaskChar=_
#用于使用DatabaseLoader/Saver加载和保存实例的标志nomialToStringLimit=50id列=自动生成id
-
我将相同的props文件(/users/Myname/wekafiles/DatabaseUtils.props)复制到weka-3-8-5-azul-zul.app java文件夹中未压缩的weka.jar文件中。(jar xf-weka.jar)
-
将文件和文件夹重新打包到weka.jar(jar cf weka.jar*)
-
重新启动机器后,我检查了CLASSPATH env变量是否定义良好,并且来源于.zprofile。JAVA_HOME的定义也很好,工作也很好。
-
什么都不管用。。。仍然得到消息:
连接到:jdbc:sqlserver://localhost:1443;databasename=MyDB=false
找不到合适的驱动程序。。。
有更好的方法吗?我非常喜欢Weka,但我想在MySQL、SQLServer和MonetDB数据库中使用更大的数据集来训练模型。
非常感谢您的帮助。
Michael p.
我不是Mac用户,也不经常将Weka作为独立工具使用。但以下是刚才在我的Linux盒子上使用Java11时对我有效的方法。
假设您的weka.jar
位于以下目录中(例如,从独立于平台的zip文件中提取):
~/tools/weka/weka-3-9-5
所有JDBC驱动程序jar都存储在以下目录中:
~/tools/jdbc
然后,您可以从终端像这样启动Weka,使用CLASSPATH
变量仅用于GUIChooser:的java
调用
CLASSPATH=~/tools/weka/weka-3-9-5/weka.jar:~/tools/jdbc/* java weka.gui.GUIChooser
注意:这假设java
可执行文件可从PATH
环境变量的目录中获得。
更新后的DatabaseUtils.props
应进入$HOME/wekafiles/props
。