/* * avenir: Predictive analytic based on Hadoop Map Reduce * Author: Pranab Ghosh * * Licensed under the Apache License, Version 2.0 (the "License"); you * may not use this file except in compliance with the License. You may * obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. */ package org.avenir.util; public class ConfusionMatrix { private String posClass; private String negClass; private int truePos; private int falsePos; private int trueNeg; private int falseNeg; public ConfusionMatrix( String negClass, String posClass) { this.negClass = negClass; this.posClass = posClass; } public void report(String predClass, String actualClass) { if (predClass.equals(posClass)) { if (actualClass.equals(posClass)) { ++truePos; } else { ++falsePos; } } else { if (actualClass.equals(negClass)) { ++trueNeg; } else { ++falseNeg; } } } public int getTruePos() { return truePos; } public int getFalsePos() { return falsePos; } public int getTrueNeg() { return trueNeg; } public int getFalseNeg() { return falseNeg; } public int getRecall() { return (100 * truePos) /(truePos + falseNeg); } public int getPrecision() { return (100 * truePos) /(truePos + falsePos); } public int getAccuracy() { return (100 * (truePos + trueNeg)) / (truePos + trueNeg + falsePos + falseNeg ); } }