/* * Sifarish: Recommendation Engine * 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.sifarish.feature; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Majority voting knn classifier * @author pranab * */ public class VotingClassifier extends NearestNeighborClassifier { /* (non-Javadoc) * @see org.sifarish.feature.NearestNeighborClassifier#classify(java.util.List) */ @Override public String classify(List<String> neighbors) { String clazz = null; Map<String, Integer> voteCounter = new HashMap<String, Integer>(); for (String neighbor : neighbors) { String thisClazz = neighbor.split(",")[2]; Integer count = voteCounter.get(thisClazz); if (null == count) { count = 1; } else { count = count + 1; } voteCounter.put(thisClazz, count); } // find max vote int max = 0; for ( Map.Entry<String, Integer> entry : voteCounter.entrySet() ) { if (entry.getValue() > max) { max = entry.getValue(); clazz = entry.getKey(); } } return clazz; } }