package org.streaminer.stream.classifier.bayes; import org.streaminer.stream.data.Data; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.streaminer.util.SizeOf; /** * <p> * This implementation of the MultiBayes learner uses the Lossy-Counting Bayes * implementation, which counts at fixed memory space. * </p> * * @author Christian Bockermann <chris@jwall.org> * */ public class MultiTopkBayes extends MultiBayes { /** The unique class ID */ private static final long serialVersionUID = 1354945765610306076L; /* A global logger for this class */ private static final Logger LOG = LoggerFactory.getLogger(MultiTopkBayes.class); private int k = 100; private int i = 0; private int nestedNBs = 0; /** * @return the k */ public Integer getK() { return k; } /** * @param k the k to set */ public void setK(Integer k) { this.k = k; } /** * @return * @see stream.learner.MultiBayes#createBayesLearner(java.lang.String) */ @Override protected NaiveBayes createBayesLearner(String attribute) { LOG.debug("Creating new TopK-bayes for attribute {}", attribute); TopKBayes lb = new TopKBayes(); if (getK() == null) { setK(100); LOG.warn("No value set for parameter 'k', using default: {}", getK()); } lb.setK(getK()); lb.setLabelAttribute(attribute); this.nestedNBs++; return lb; } /** * @param item * @see stream.learner.MultiBayes#learn(stream.data.Data) */ @Override public void learn(Data item) { super.learn(item); i++; if (i % 100 == 0) { LOG.debug("After {} envts:", i); LOG.debug(" using {} bytes", SizeOf.sizeOf(this)); LOG.debug(" using {} naive bayes learner", nestedNBs); } } }