首页 > 解决方案 > 值中的属性实例

问题描述

我正在观看一个私人讲座视频,讲师试图建立一个直方图分类器。我模仿了代码,尽管当我到达时我的返回错误:

mean += ins.value(attIndex:0);

他们提到这attIndex:0是第一个属性,因此对于您调用 value 的单个实例,它返回存储在该特定实例的该属性中的值。

即便如此,当他们继续训练他们的数据时,他们也会给出以下代码:

double[] d = train.instance(index:0).toDoubleArray();

从文件train加载的数据在哪里。似乎对他们有用,尽管对我来说,我从 Eclipse 中得到了通常的错误,要求输入一个字段,或者为什么有一个冒号。我猜这与函数和其他代码有关。里面也是如此,出于某种原因,我正在观察的个人能够融入其中。.arffindex:0instance 在此处输入图像描述value 在此处输入图像描述int indexindex:0

知道为什么包含它吗?如果我刚离开0那里会发生什么情况,或者这是否会破坏他们所做的评论:- “对于您调用 value 的单个实例,它返回存储在该特定实例的该属性中的值。”

这是分类器的示例:

package TestLEarning;

import weka.classifiers.AbstractClassifier;
import weka.classifiers.Classifier;
import weka.core.Capabilities;
import weka.core.Instance;
import weka.core.Instances;

public class HistogramClassifier implements Classifier {
    double mean = 0;

    @Override
    public void buildClassifier(Instances data) throws Exception {
        double mean = 0;
        for (Instance ins : data) {
            mean += ins.value(attIndex: 0);
        }
        mean /= data.numInstances();
    }

    @Override
    public double classifyInstance(Instance arg0) throws Exception {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public double[] distributionForInstance(Instance arg0) throws Exception {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Capabilities getCapabilities() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String toString() {
        return mean + "";
    }
}

标签: javaweka

解决方案


在 Java 中你不能写ins.value(attIndex:0). 在 Visual Basic 中有一些这样的语法,但在 Java 中只需编写ins.value(0). 正如之前有人提到的,这可能是来自 IDE 的提示。(我之前在 IntelliJ 中看到过。)


推荐阅读