public double[] getPredictionTargetMean(MultiLabelInstance inst) { double[] pred = new double[inst.numOutputAttributes()]; if (examplesSeen > 0) { for (int i = 0; i < inst.numOutputAttributes(); i++) { pred[i] = sumOfValues.getValue(i) / examplesSeen; } } return pred; }
protected double [] getNormalizedOutput(MultiLabelInstance instance) { int numOutputs=instance.numOutputAttributes(); double [] normalizedOutput=new double[numOutputs]; for(int i=0; i<numOutputs; i++){ double mean=outAttrSum[i]/count; double std=Utils.computeSD(outAttrSquaredSum[i], outAttrSum[i], count); normalizedOutput[i]=instance.valueOutputAttribute(i)-mean; if (std > SD_THRESHOLD) normalizedOutput[i]/=std; } return normalizedOutput; }
public double[] getNormalizedError(MultiLabelInstance inst, double[] prediction) { double[] normalPrediction = normalizeTargetVector(prediction); double[] normalValue = normalizedTargetVector(inst); double[] out = new double[getModelContext().numOutputAttributes()]; for (int i = 0; i < inst.numOutputAttributes(); i++) { out[i] = Math.abs(normalValue[i] - normalPrediction[i]); } return out; }
@Override public Prediction getPredictionForInstance(MultiLabelInstance inst) { int numOutputs=inst.numOutputAttributes(); Prediction p=new MultiLabelPrediction(numOutputs); if(countVector!=null){ for (int i=0; i<numOutputs; i++){ double frac=countVector[i]/numInstances; p.setVote(i, 1, frac); p.setVote(i, 0, 1-frac); } } return p; }
public void updateWeights(MultiLabelInstance inst, double learningRatio) { if (instancesSeen > 1.0) { // Compute the normalized instance and the delta double[] normalizedInput = tree.normalizedInputVector(inst); double[] normalizedPrediction = prediction(normalizedInput); double[] normalizedTarget = tree.normalizedTargetVector(inst); for (int i = 0; i < inst.numOutputAttributes(); i++){ double delta = normalizedTarget[i] - normalizedPrediction[i]; for (int j = 0; j < normalizedInput.length; j++) { weights[i][j] += delta * learningRatio * normalizedInput[j]; } } normalizeWeights(); } }
public double[] normalizedTargetVector(MultiLabelInstance inst) { double[] out = new double[getModelContext().numOutputAttributes()]; if (normalize()) { for (int i = 0; i < inst.numOutputAttributes(); i++) { double value = inst.valueOutputAttribute(i); double sd = computeSD(sumOfSquares.getValue(i), sumOfValues.getValue(i), examplesSeen); double average = sumOfValues.getValue(i) / examplesSeen; if (sd > 0 && examplesSeen > 1) out[i] = (value - average) / (sd); else out[i] = 0; } } else { for (int i = 0; i < inst.numOutputAttributes(); i++) { out[i] = inst.valueOutputAttribute(i); } } return out; }
System.err.print("[WARNING] Prediction is null! (Ignoring this prediction)"); else if (y.numOutputAttributes() < x.numOutputAttributes()) { System.err.println("[WARNING] Only "+y.numOutputAttributes()+" labels found! (Expecting "+x.numOutputAttributes()+")\n (Ignoring this prediction)");
MultiLabelInstance inst=(MultiLabelInstance) testInst.getData(); if(this.squareError==null){ this.squareError=new Estimator[inst.numOutputAttributes()]; this.averageError=new Estimator[inst.numOutputAttributes()]; this.averageErrorToTargetMean=new Estimator[inst.numOutputAttributes()]; this.squareErrorToTargetMean=new Estimator[inst.numOutputAttributes()]; this.sumY=new Estimator[inst.numOutputAttributes()]; for (int i=0; i<inst.numOutputAttributes();i++){ this.averageError[i] = new Estimator(this.widthOption.getValue()); this.averageErrorToTargetMean[i]=new Estimator(this.widthOption.getValue());
@Override public void trainOnInstanceImpl(MultiLabelInstance instance) { int numOutputs=instance.numOutputAttributes();
prediction= new MultiLabelPrediction(instance.numOutputAttributes()); boolean isUnlabeledRejected=true; for(int m=0; m < instance.numOutputAttributes() ; m++){ if(instance.valueOutputAttribute(m)==Double.NEGATIVE_INFINITY){ isUnlabeled=true; if( isUnlabeled ){ if(rule.getAnomalyScore() >= scoreThreshold.getValue() ){ for( int a=0 ; a<instance.numOutputAttributes() ; a++) instance.setClassValue(a,prediction.getVote(a,0)); isUnlabeledRejected=false; //Unlabeled rejected for(int m=0; m < instance.numOutputAttributes() ; m++){ if(instance.valueOutputAttribute(m)==Double.NEGATIVE_INFINITY ){ for( int a=0 ; a<instance.numOutputAttributes() ; a++){ instance.setClassValue(a,prediction.getVote(a,0));
for (int i=0; i< instance.numOutputAttributes() ; i++){ System.out.print(" " + vote.getVotes(i)[0]);
DoubleVector[] observations = new DoubleVector[inst.numOutputAttributes()]; for (int j = 0; j < inst.numOutputAttributes(); j++) { observations[j] = new DoubleVector(); observations[j].setValue(0, inst.weight());