Weka常见运行错误

—1、OutOfMemoryException(内存不足例外)
大多数Java虚拟机只分配一定数额的最大内存来运行Java程序,通常远低于计算机中的内存大小。但是,可以通过设置适当的选项,扩展虚拟内存。例如,可以用命令:
java-Xmx512m ...
设置最大Java堆的大小为512MB。还可以使用Xmx2g将其设置为2GB,这样就足够使用。当然,这还要看计算机的配置,设置过大的内存会影响运行性能。

2、StackOverflowError(栈溢出错误)
这是由于设置的堆栈过小造成的错误。尝试增加虚拟机的堆栈。可以使用下面的命令来增加堆栈空间:
java-Xss512k ...
该命令设置Java的最大堆栈大小为512KB。如果还是不够,请慢慢增加。

—3、training and test setare not compatible(训练集和测试集不兼容)
Weka假定训练集和测试集的结构应该完全一致,这意味着训练集和测试集的属性不但在数量上相同,而且在类型上也应该完全一样。对于标称属性,必须确保标签的数量和顺序是完全一致。

使用已经训练好的分类器进行预测,不需要包括任何分类属性的信息。出于速度的原因,Weka不执行任何有关数据集结构的检查,既没有将属性名称从训练空间映射到测试空间,也没有映射标签。在内部,数据集的单行表示为一个double型数组。对于数值属性,这并不构成问题,但对于其他类型的属性,如标称属性,double值表示可用标签列表的索引。标签的不同顺序会导致不同的标签却采用相同的索引表示,这样,预测就不可靠了。

解决的方法是使用批量过滤。如果第二个数据集(通常为测试集)需要与第一个数据集(通常为训练集)处理为具有相同的统计数据,那么就使用批量过滤。代码如下:

java weka filters.unsupervised.attribute.Standardize \

-b \

-i train.arff \

-o train_std.arff \

-s test_std.arff

注:上述命令是适用于Linux/Unix的bash,反斜杠表示续行,如果采用Windows或SimpleCLI,需要去掉反斜杠,并在这一行写全命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值