—1、OutOfMemoryException(内存不足例外)
大多数Java虚拟机只分配一定数额的最大内存来运行Java程序,通常远低于计算机中的内存大小。但是,可以通过设置适当的选项,扩展虚拟内存。例如,可以用命令:
java-Xmx512m ...
设置最大Java堆的大小为512MB。还可以使用Xmx2g将其设置为2GB,这样就足够使用。当然,这还要看计算机的配置,设置过大的内存会影响运行性能。
2、StackOverflowError(栈溢出错误)
这是由于设置的堆栈过小造成的错误。尝试增加虚拟机的堆栈。可以使用下面的命令来增加堆栈空间:
java-Xss512k ...
该命令设置Java的最大堆栈大小为512KB。如果还是不够,请慢慢增加。
—3、training and test setare not compatible(训练集和测试集不兼容)
Weka假定训练集和测试集的结构应该完全一致,这意味着训练集和测试集的属性不但在数量上相同,而且在类型上也应该完全一样。对于标称属性,必须确保标签的数量和顺序是完全一致。
解决的方法是使用批量过滤。如果第二个数据集(通常为测试集)需要与第一个数据集(通常为训练集)处理为具有相同的统计数据,那么就使用批量过滤。代码如下:
java weka filters.unsupervised.attribute.Standardize \
-b \
-i train.arff \
-o train_std.arff \
-s test_std.arff
注:上述命令是适用于Linux/Unix的bash,反斜杠表示续行,如果采用Windows或SimpleCLI,需要去掉反斜杠,并在这一行写全命令