java - 无法处理任何类属性! k意味着java

标签 java weka k-means

我想执行 k-means 算法

我在 Eclipse 中使用这个 weka

我有这个代码

public class demo {
    public demo() throws Exception {
        // TODO Auto-generated constructor stub
        BufferedReader breader = null;
        breader = new BufferedReader(new FileReader(
                "D:/logiciels/weka-3-7-12/weka-3-7-12/data/iris.arff"));
        Instances Train = new Instances(breader);
        Train.setClassIndex(Train.numAttributes() - 1);
        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++;
        }
        breader.close();
    }
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        new demo();
    }
}

但是有一个异常(exception)

Exception in thread "main" weka.core.WekaException: weka.clusterers.SimpleKMeans: Cannot handle any class attribute!
    at weka.core.Capabilities.test(Capabilities.java:1295)
    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 wakaproject.demo.<init>(demo.java:24)
    at wakaproject.demo.main(demo.java:37)

我已经阅读了一些解决方案,但我不知道问题出在哪里

提前谢谢您

最佳答案

错误:

Exception in thread "main" weka.core.WekaException: weka.clusterers.SimpleKMeans: Cannot handle any class attribute!

指出 SimpleKMeans 无法处理类属性。这是因为 K-means 是一种无监督学习算法,这意味着不应该定义类。然而,代码中的一行设置了类值。

如果您按如下方式修改代码,它就可以工作。

public class demo {
    public demo() throws Exception {
        // TODO Auto-generated constructor stub
        BufferedReader breader = null;
        breader = new BufferedReader(new FileReader(
                "D:/logiciels/weka-3-7-12/weka-3-7-12/data/iris.arff"));
        Instances Train = new Instances(breader);
        //Train.setClassIndex(Train.numAttributes() - 1); // comment out this line
        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++;
        }
        breader.close();
    }
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        new demo();
    }
}

关于java - 无法处理任何类属性! k意味着java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28706595/

相关文章:

java - CLI 中的 Weka 汇总统计数据

django - 在 Amazon RDS 上安装 Kmeans PostgreSQL 扩展

java - 该程序中中断的执行顺序是如何工作的?

java - 房间数据库 : RecyclerView does not update after delete data in detail activity

javascript - 二郎题

rdf - 有没有办法将Weka j48决策树输出映射为RDF格式?

algorithm - 在 Z 分数归一化数据上应用 K 均值聚类

scala - K均值||用于 Spark 情绪分析

java - 如何有效地(不会因无效输入引发异常)解析 Java 中的整数?

java - 路径中的 Ant 大写与小写字符