Java Weka-如何标准化单个实例
我需要实现一个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
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。我认为您应该能够使用经过训练的分类器进行预测,它将对从训练集中学习到的被预测实例应用相同的转换。