1984e52f31d596840cfa51b1238e1c43d2e1918f8saberian/* 2984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * Copyright (C) 2011 The Android Open Source Project 3984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * 4984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * Licensed under the Apache License, Version 2.0 (the "License"); 5984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * you may not use this file except in compliance with the License. 6984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * You may obtain a copy of the License at 7984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * 8984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * http://www.apache.org/licenses/LICENSE-2.0 9984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * 10984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * Unless required by applicable law or agreed to in writing, software 11984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * distributed under the License is distributed on an "AS IS" BASIS, 12984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * See the License for the specific language governing permissions and 14984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * limitations under the License. 15984e52f31d596840cfa51b1238e1c43d2e1918f8saberian */ 16984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 17984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 18984e52f31d596840cfa51b1238e1c43d2e1918f8saberianpackage android.bordeaux.learning; 19984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 20984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport java.util.HashMap; 21984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport java.util.Map; 22984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport android.util.Log; 23984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 24984e52f31d596840cfa51b1238e1c43d2e1918f8saberian/** 25984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * A simple impelentation of histograms with sparse enteries using HashMap. 26984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * User can push examples or extract probabilites from this histogram. 27984e52f31d596840cfa51b1238e1c43d2e1918f8saberian */ 28984e52f31d596840cfa51b1238e1c43d2e1918f8saberianpublic class predictorHist { 29984e52f31d596840cfa51b1238e1c43d2e1918f8saberian private HashMap<String, Integer> mCountHist; 30984e52f31d596840cfa51b1238e1c43d2e1918f8saberian private int mSampleCount; 31984e52f31d596840cfa51b1238e1c43d2e1918f8saberian String TAG = "PredicrtHist"; 32984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 33984e52f31d596840cfa51b1238e1c43d2e1918f8saberian public predictorHist() { 34984e52f31d596840cfa51b1238e1c43d2e1918f8saberian mCountHist = new HashMap<String, Integer>(); 35984e52f31d596840cfa51b1238e1c43d2e1918f8saberian mSampleCount = 0; 36984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 37984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 38984e52f31d596840cfa51b1238e1c43d2e1918f8saberian // reset histogram 39984e52f31d596840cfa51b1238e1c43d2e1918f8saberian public void ResetPredictorHist() { 40984e52f31d596840cfa51b1238e1c43d2e1918f8saberian mCountHist.clear(); 41984e52f31d596840cfa51b1238e1c43d2e1918f8saberian mSampleCount = 0; 42984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 43984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 44984e52f31d596840cfa51b1238e1c43d2e1918f8saberian // getters 45984e52f31d596840cfa51b1238e1c43d2e1918f8saberian public final HashMap<String, Integer> getHist() { 46984e52f31d596840cfa51b1238e1c43d2e1918f8saberian return mCountHist; 47984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 48984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 49984e52f31d596840cfa51b1238e1c43d2e1918f8saberian public int getHistCounts() { 50984e52f31d596840cfa51b1238e1c43d2e1918f8saberian return mSampleCount; 51984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 52984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 53984e52f31d596840cfa51b1238e1c43d2e1918f8saberian //setter 54984e52f31d596840cfa51b1238e1c43d2e1918f8saberian public void set(HashMap<String, Integer> hist) { 55984e52f31d596840cfa51b1238e1c43d2e1918f8saberian ResetPredictorHist(); 56984e52f31d596840cfa51b1238e1c43d2e1918f8saberian for (Map.Entry<String, Integer> x : hist.entrySet()) { 57984e52f31d596840cfa51b1238e1c43d2e1918f8saberian mCountHist.put(x.getKey(), x.getValue()); 58984e52f31d596840cfa51b1238e1c43d2e1918f8saberian mSampleCount = mSampleCount + x.getValue(); 59984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 60984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 61984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 62984e52f31d596840cfa51b1238e1c43d2e1918f8saberian /** 63984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * pushes a new example to the histogram 64984e52f31d596840cfa51b1238e1c43d2e1918f8saberian */ 65984e52f31d596840cfa51b1238e1c43d2e1918f8saberian public void pushSample( String fs) { 66984e52f31d596840cfa51b1238e1c43d2e1918f8saberian int histValue = 1; 67984e52f31d596840cfa51b1238e1c43d2e1918f8saberian if (mCountHist.get(fs) != null ) 68984e52f31d596840cfa51b1238e1c43d2e1918f8saberian histValue = histValue + mCountHist.get(fs); 69984e52f31d596840cfa51b1238e1c43d2e1918f8saberian mCountHist.put(fs,histValue); 70984e52f31d596840cfa51b1238e1c43d2e1918f8saberian mSampleCount++; 71984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 72984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 73984e52f31d596840cfa51b1238e1c43d2e1918f8saberian /** 74984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * return probabilty of an exmple using the histogram 75984e52f31d596840cfa51b1238e1c43d2e1918f8saberian */ 76984e52f31d596840cfa51b1238e1c43d2e1918f8saberian public float getProbability(String fs) { 77984e52f31d596840cfa51b1238e1c43d2e1918f8saberian float res = 0; 78984e52f31d596840cfa51b1238e1c43d2e1918f8saberian if (mCountHist.get(fs) != null ) 79984e52f31d596840cfa51b1238e1c43d2e1918f8saberian res = ((float) mCountHist.get(fs)) / ((float)mSampleCount); 80984e52f31d596840cfa51b1238e1c43d2e1918f8saberian return res; 81984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 82984e52f31d596840cfa51b1238e1c43d2e1918f8saberian} 83