java - 异常:训练实例不足(必需:1,提供:0)!在韦卡

标签 java exception weka data-mining k-means

我在 moviedata.arff 文件中有一个电影数据集

@relation movie
@attribute annee numeric
@attribute Action numeric
@attribute Adventure numeric
@attribute Drama numeric
@attribute Romance numeric
@attribute Comedy numeric
@attribute Documentary numeric
@attribute Sci-Fi numeric
@attribute Triller numeric
@attribute Crime numeric
@attribute Musical numeric
@attribute Children numeric
@attribute Animation numeric
@attribute Horror numeric
@attribute Fantasy numeric
@attribute War numeric
@attribute Film-noir numeric
@attribute Western numeric
@attribute Mystery numeric
@data
%Toy Story%1995,0,1,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0
%Jumanji%1995,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0
%Grumpier Old Men%1995,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
%Waiting to Exhale%1995,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
%Father of the Bride Part II%1995,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0
%Heat%1995,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0
%Sabrina%1995,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
%Tom and Huck%1995,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
%Sudden Death%1995,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
%GoldenEye%1995,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0
%The American President%1995,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0

我想使用 java 和 weka 将此文件应用为 SimpleKmeans 算法

public class generating_clusters {  
    BufferedReader breader;
    Instances Train;

    public generating_clusters() throws Exception {
        // TODO Auto-generated constructor stub
        breader = new BufferedReader(new FileReader(
                "D:/workspace_java/JenaTutorial/moviedata.arff"));
        Train = new Instances(breader);
        SimpleKMeans kMeans = new SimpleKMeans();
        kMeans.setSeed(10);
        kMeans.setPreserveInstancesOrder(true);
        kMeans.setNumClusters(3);
        kMeans.buildClusterer(Train);
        int[] assignments = kMeans.getAssignments();
        int i = 0;
        for (int clusterNum : assignments) {
            System.out.printf("Instance %d -> Cluster %d", i, clusterNum);
            i++;
        } 
    }
}

但我有一个异常(exception):

Exception in thread "main" weka.core.WekaException: weka.clusterers.SimpleKMeans: Not enough training instances (required: 1, provided: 0)!
    at weka.core.Capabilities.test(Capabilities.java:1400)
    at weka.core.Capabilities.test(Capabilities.java:1208)
    at weka.core.Capabilities.testWithFail(Capabilities.java:1506)
    at weka.clusterers.SimpleKMeans.buildClusterer(SimpleKMeans.java:595)
    at generating_clusters.<init>(generating_clusters.java:20)
    at generating_clusters.main(generating_clusters.java:32)

我不明白这个异常,你能帮我吗?

提前谢谢

最佳答案

根据属性关系文件格式(ARFF):

Lines that begin with a % are comments.

( http://www.cs.waikato.ac.nz/ml/weka/arff.html )

因此,鉴于您的 moviedata.arff @data 部分,这可以解释为什么没有读入训练实例。

换句话说,当异常显示“没有足够的训练实例(必需:1,提供:0)”时,它的字面意思是这样的。它认为您没有提供任何实例,因为它们都在您的 arff 文件中被注释掉了。

关于java - 异常:训练实例不足(必需:1,提供:0)!在韦卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28775879/

相关文章:

java - 无法处理多值名义类 - JAVA

java - 可读性分类器采用哪种方法

model - 如何使用这个 smoreg 模型手动预测 future 价格?

java - <welcome-file-list> 在 Tomcat 中被忽略

java - 有没有办法将存储在 XML 中的值数组读取到类型化 ArrayList 中?

java - 无法编译 : sparkjava exception handling

java - Java 中的检查异常与非检查异常

python - 在 except block 之后执行(部分)try block

javascript - 如何在 Spring MVC 中的 javascript 中显示属性文件中的值

java - 我在 Swing Worker 中遇到编译错误?