public double [] sumVoteDistrib() { int numOutputs=vote.numOutputAttributes(); double [] sum= new double[numOutputs]; for (int j=0; j<numOutputs;j++){ for (int i=0; i<vote.numClasses(j); ++i) sum[j]+=vote.getVote(j, i); } return sum; }
@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; }
int numClasses=votes.get(i).numClasses(o); if(votes.get(i).hasVotesForAttribute(o)){ if(sumError[o]>0)
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]); } }