@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; }
@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++) { //For each vote for (int i=0; i<n; i++) { int numClasses=votes.get(i).numClasses(o); if(votes.get(i).hasVotesForAttribute(o)) weights[i][o]=1.0/outputAttributesCount[o]; //else takes value 0 //For each class for(int j=0; j<numClasses; j++){ weightedVote.setVote(o, j, weightedVote.getVote(o, j)+votes.get(i).getVote(o, j)*weights[i][o]); } } } } return weightedVote; }
weightedVote.setVote(o, j, weightedVote.getVote(o, j)+votes.get(i).getVote(o, j)*weights[i][o]);
public void normalize() { double [] sum=sumVoteDistrib(); for (int j=0; j<vote.numOutputAttributes();j++) for (int i=0; i<vote.numClasses(j); ++i) if(sum[j]!=0) vote.setVote(j, i, vote.getVote(j, i)/sum[j]); } }
@Override public Prediction getPredictionForInstance(MultiLabelInstance instance) { Prediction prediction=null; if (this.hasStarted){ prediction=new MultiLabelPrediction(ensemble.length); DoubleVector combinedVote = new DoubleVector(); for (int i = 0; i < this.ensemble.length; i++) { double vote=this.ensemble[i].getVotesForInstance(transformInstance(instance,i))[0]; prediction.setVote(i, 0, vote); } } return prediction; } }
public static Prediction combinePredictions(Prediction[] predictions, Instance inst) { Prediction result = new MultiLabelPrediction(inst.numOutputAttributes()); for (int i = 0; i < predictions.length; i++) { try { Prediction more_votes = predictions[i]; if (more_votes != null) { for (int numOutputAttribute = 0; numOutputAttribute < inst.numOutputAttributes(); numOutputAttribute++) { int length = 0; if (more_votes.getVotes(numOutputAttribute) != null) length = more_votes.getVotes(numOutputAttribute).length; for (int numValueAttribute = 0; numValueAttribute < length; numValueAttribute++) { result.setVote(numOutputAttribute, numValueAttribute, (result.getVote(numOutputAttribute, numValueAttribute) + more_votes.getVote(numOutputAttribute, numValueAttribute) / (double) predictions.length)); } } } } catch (NullPointerException e) { System.err.println("NullPointer"); } catch (ArrayIndexOutOfBoundsException e) { System.err.println("OutofBounds"); } } return result; }
@Override public Prediction getPredictionForInstance(MultiLabelInstance inst) { ErrorWeightedVoteMultiLabel vote=getVotes(inst); Prediction pred=vote.getPrediction(); if(vote!=null) { if ( (MultiLabelLearner) getPreparedClassOption(this.learnerOption) instanceof moa.classifiers.rules.multilabel.functions.MultiLabelPerceptronClassification ) { for(int i=0; i<pred.size() ; i++){ pred.setVote(i,0, pred.getVote(i,0) < 0.5 ? 1:0 ); } } return pred; } else return null; }
@Override public Prediction getPredictionForInstance(MultiLabelInstance instance) { Prediction prediction=null; double [] votes= new double[instance.numClasses()]; double vote; if (this.hasStarted){ prediction=new MultiLabelPrediction(ensemble.length); DoubleVector combinedVote = new DoubleVector(); for (int i = 0; i < this.ensemble.length; i++) { vote= this.ensemble[i].getVotesForInstance(transformInstance(instance,i))[0]; prediction.setVote(i, 0, vote); } } return prediction; }