Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Weka-如何标准化单个实例_Java_Classification_Weka_Standardized - Fatal编程技术网

Java Weka-如何标准化单个实例

Java Weka-如何标准化单个实例,java,classification,weka,standardized,Java,Classification,Weka,Standardized,我需要实现一个Weka分类器,在处理之前对输入数据进行标准化。为此,我使用以下代码: private Filter standardize = new Standardize(); ... public void buildClassifier(Instances instances) throws Exception { if (this.stdAtt) { this.standardize.setInputFormat(instances); inst

我需要实现一个Weka分类器,在处理之前对输入数据进行标准化。为此,我使用以下代码:

private Filter standardize = new Standardize();
...
public void buildClassifier(Instances instances) throws Exception {
    if (this.stdAtt) {
        this.standardize.setInputFormat(instances);
        instances = Filter.useFilter(instances, this.standardize);
    }
    ....
}
现在,要对单个实例进行分类,我还需要在实际使用相同的
标准化
过滤器进行分类之前对其进行标准化。但是
Filter.useFilter
只接受
实例
作为参数,而不是
实例

public double classifyInstance(Instance instance) throws Exception {
    if (this.stdAtt) {
        // standardize instance before processing
    }
    return super.classifyInstance(instance);
}

我怎么做?还是我应该使用自己的标准化工具?

“标准化”基本上是指“除以标准偏差,减去平均值”。因此,标准化单个实例没有任何意义。如果您想对单个实例应用与初始实例相同的操作,那么您可能必须手动计算平均值和stdDev,以便以后可以对单个实例进行计算(我不知道有什么内置方法可以这样做,但需要做一些研究)。但是,请注意:如果给定实例已经是初始数据的一部分,则平均值/stdDev会有所不同!我不太熟悉Weka的Java API,但我认为实现标准化的适当方法是使用标准化过滤器创建FilteredClassifier。我认为您应该能够使用经过训练的分类器进行预测,它将对从训练集中学习到的被预测实例应用相同的转换。