Java Weka多层感知器中归一化值的提取

Java Weka多层感知器中归一化值的提取,java,matlab,machine-learning,neural-network,weka,Java,Matlab,Machine Learning,Neural Network,Weka,我有一个机器学习方案,其中我使用Weka的java类在matlab脚本中实现机器学习。然后我将分类器的模型上传到数据库中,因为我需要在不同的机器上以不同的语言(obj-c)执行分类。网络评估对于编程来说相当简单,但我需要WEKA在训练前用于规范化数据集的值,以便我可以在以后的网络评估中使用它们。有人知道如何获得weka用于训练多层感知器网络的归一化因子吗?我希望答案是Java 在对WEKA源代码和文档进行了一些挖掘之后。。。这就是我想到的。尽管WEKA中有一个名为“Normalize”的过滤器,

我有一个机器学习方案,其中我使用Weka的java类在matlab脚本中实现机器学习。然后我将分类器的模型上传到数据库中,因为我需要在不同的机器上以不同的语言(obj-c)执行分类。网络评估对于编程来说相当简单,但我需要WEKA在训练前用于规范化数据集的值,以便我可以在以后的网络评估中使用它们。有人知道如何获得weka用于训练多层感知器网络的归一化因子吗?我希望答案是Java

在对WEKA源代码和文档进行了一些挖掘之后。。。这就是我想到的。尽管WEKA中有一个名为“Normalize”的过滤器,但多层感知器并没有使用它,而是在内部使用了一段类似这样的代码

m_attributeRanges = new double[inst.numAttributes()];
m_attributeBases = new double[inst.numAttributes()];
  for (int noa = 0; noa < inst.numAttributes(); noa++) {
min = Double.POSITIVE_INFINITY;
max = Double.NEGATIVE_INFINITY;
for (int i=0; i < inst.numInstances();i++) {
  if (!inst.instance(i).isMissing(noa)) {
    value = inst.instance(i).value(noa);
    if (value < min) {
      min = value;
    }
    if (value > max) {
      max = value;
    }
  }
}

m_attributeRanges[noa] = (max - min) / 2;
m_attributeBases[noa] = (max + min) / 2;
if (noa != inst.classIndex() && m_normalizeAttributes) {
  for (int i = 0; i < inst.numInstances(); i++) {
    if (m_attributeRanges[noa] != 0) {
      inst.instance(i).setValue(noa, (inst.instance(i).value(noa)  
                      - m_attributeBases[noa]) /
                m_attributeRanges[noa]);
    }
    else {
      inst.instance(i).setValue(noa, inst.instance(i).value(noa) - 
                m_attributeBases[noa]);
    }
m_attributeRanges=new double[inst.numAttributes()];
m_attributebase=新的双精度[inst.numAttributes()];
对于(int noa=0;noa最大值){
最大值=最大值;
}
}
}
m_attributeRanges[noa]=(max-min)/2;
m_属性基[noa]=(最大+最小)/2;
if(noa!=仪器分类索引()和m_标准化属性){
对于(int i=0;i
因此,我需要传输到另一个系统的唯一值是最小值和最大值。幸运的是,我在filter
weka.filters.unsupervised.attribute.Normalize
上找到了一个方法,该方法返回处理数据集的mins和maxes的双数组。所有然后我要做的是告诉多层感知器不要自动规范化我的数据,并用过滤器单独处理它,这样我就可以提取分钟和最大值,连同权重和其他所有内容一起发送到数据库