@Override public void addResult(Example<Instance> example, double[] classVotes) { Prediction p=new MultiLabelPrediction(1); p.setVotes(classVotes); addResult(example, p); }
@Override public Prediction getPredictionForInstance(Instance inst){ Prediction prediction= new MultiLabelPrediction(1); prediction.setVotes(getVotesForInstance(inst)); return prediction; }
@Override public Prediction targetPredictionToSource(Prediction targetPrediction) { Prediction sourcePrediction=new MultiLabelPrediction(this.numSourceInstancesOutputs); for (int i=0; i<targetPrediction.numOutputAttributes();i++){ sourcePrediction.setVotes(this.targetOutputIndices[i], targetPrediction.getVotes(i)); } return sourcePrediction; }
@Override public void trainOnInstanceImpl(MultiLabelInstance inst) { int numOutputs = inst.numberOutputTargets(); Prediction prediction = new MultiLabelPrediction(numOutputs); for(int i=0; i<numOutputs;i++) prediction.setVotes(i,new double[]{inst.classValue(i)}); this.lastSeenClasses = prediction; }
@Override public Prediction computeWeightedVote() { int n=votes.size(); if (n>0){ int numOutputs=outputAttributesCount.length; weights=new double[n][numOutputs]; weightedVote=new MultiLabelPrediction(numOutputs); //For each output attribute for (int o=0;o<numOutputs;o++) { //int numClasses=votes.get(0).numClasses(o); //For each vote for (int i=0; i<n; i++) { if(votes.get(i).hasVotesForAttribute(o)){ //set as weighted vote and set weight to 1 weights[i][o]=1; /*for(int j=0; j<numClasses; j++){ weightedVote.setVote(o, j, votes.get(i).getVote(o, j)); }*/ weightedVote.setVotes(o, votes.get(i).getVotes(o)); break; } } } } return weightedVote; } }
public void addPrediction(Prediction prediction, MultiLabelInstance inst){ int numOutputs=inst.numberOutputTargets(); Prediction trueClass= new MultiLabelPrediction(numOutputs); for (int i=0; i<numOutputs; i++){ trueClass.setVotes(i, new double[]{inst.valueOutputAttribute(i)}); } addPrediction(prediction, trueClass, inst.weight()); }
@Override public Prediction getPredictionForInstance(MultiLabelInstance inst) { Prediction pred=null; if(hasStarted) { int numOutputs=outAttrSum.length; pred=new MultiLabelPrediction(numOutputs); double [] normInputs=getNormalizedInput(inst); double [] firstLayerOutput=predict1stLayer(normInputs); double [] denormalizedOutput=null; if(!skipStackingOption.isSet()){ double [] secondLayerOutput=predict2ndLayer(firstLayerOutput); denormalizedOutput=getDenormalizedOutput(secondLayerOutput); } else denormalizedOutput=getDenormalizedOutput(firstLayerOutput); for(int i=0; i<numOutputs; i++) pred.setVotes(i, new double[]{denormalizedOutput[i]}); } return pred; }
for (int i=0; i<vote.numOutputAttributes(); i++){ if(!vote.hasVotesForAttribute(i)){ fixVote.setVotes(i, defaultVote.getVotes(i)); fixErrors[i]=defaultErrors[i];
for (int i=0; i<vote.numOutputAttributes(); i++){ if(!vote.hasVotesForAttribute(i)){ fixVote.setVotes(i, defaultVote.getVotes(i)); fixErrors[i]=defaultErrors[i];