/** * */ package agents; import java.util.ArrayList; import master.Product; /** * @author mbilgic * */ public class AgentPhase25405 extends RationalBaselineAgent { ArrayList> corpus; /** * @param id */ public AgentPhase25405(String id) { super(id); } /* (non-Javadoc) * @see agents.Agent#learn(java.util.ArrayList) */ @Override public void learn(ArrayList> trainingInstances) { corpus = trainingInstances; } /* (non-Javadoc) * @see agents.Agent#computeProbOfGood(java.util.ArrayList) */ @Override public double computeProbOfGood(ArrayList prodFeatures) { double probGood = getProbClass("G"); //System.out.println("---------------------"); //System.out.println("Prob of good: "+probGood); int i =0; for(String j:prodFeatures){ //System.out.println("Cond Prob of : "+getCondProb(i,j,"G")); probGood = probGood*getCondProb(i,j,"G"); i++; } double probBad = getProbClass("B"); //System.out.println("+++++++++++++++++++++"); //System.out.println("Prob of bad: "+probBad); i =0; for(String j:prodFeatures){ //System.out.println("Cond Prob of : "+getCondProb(i,j,"B")); probBad = probBad*getCondProb(i,j,"B"); i++; } ////System.out.println("Prob featlist: "+getFeatListProb(prodFeatures)); //probGood = probGood/getFeatListProb(prodFeatures); //System.out.println("Prob: "+(probGood)/(probGood+probBad)); //System.out.println("*********************"); return probGood/(probGood+probBad); } public double getProbClass(String in){ int hits = 0; for(ArrayList i:corpus){ if(i.get(i.size()-1).equals(in)){ ++hits; } } return ((double)hits+1)/(2+corpus.size()); } public double getCondProb(int featureIndex,String feature, String in){ int classHits = 2; int bothHits = 1; for(ArrayList i: corpus){ if(i.get(i.size()-1).equals(in)){ ++classHits; if(i.get(featureIndex).equals(feature)){ ++bothHits; } } } return ((double)bothHits)/classHits; } }