protected static void testAggregation() { DiscreteEstimator df = new DiscreteEstimator(5, true); DiscreteEstimator one = new DiscreteEstimator(5, true); DiscreteEstimator two = new DiscreteEstimator(5, true); java.util.Random r = new java.util.Random(1); for (int i = 0; i < 100; i++) { int z = r.nextInt(5); df.addValue(z, 1); if (i < 50) { one.addValue(z, 1); } else { two.addValue(z, 1); } } try { System.out.println("\n\nFull\n"); System.out.println(df.toString()); System.out.println("Prob (0): " + df.getProbability(0)); System.out.println("\nOne\n" + one.toString()); System.out.println("Prob (0): " + one.getProbability(0)); System.out.println("\nTwo\n" + two.toString()); System.out.println("Prob (0): " + two.getProbability(0)); one = one.aggregate(two); System.out.println("\nAggregated\n"); System.out.println(one.toString()); System.out.println("Prob (0): " + one.getProbability(0)); } catch (Exception ex) { ex.printStackTrace(); } }
DiscreteEstimator newEst = new DiscreteEstimator(max + 1, true); for (int i = 0; i < argv.length; i++) { current = Integer.parseInt(argv[i]); System.out.println(newEst); System.out.println("Prediction for " + current + " = " + newEst.getProbability(current)); newEst.addValue(current, 1); DiscreteEstimator.testAggregation(); } catch (Exception e) { System.out.println(e.getMessage());
/** * Get a probability estimator for a value * * @param given the new value that data is conditional upon * @return the estimator for the supplied value given the condition */ public Estimator getEstimator(double given) { Estimator result = new DiscreteEstimator(m_Estimators.length,false); for(int i = 0; i < m_Estimators.length; i++) { result.addValue(i,m_Weights.getProbability(i) *m_Estimators[i].getProbability(given)); } return result; }
DiscreteEstimator newEst = new DiscreteEstimator(max + 1, true); + newEst.getProbability(current)); newEst.addValue(current, 1);
for (int k = 0; k < d.getNumSymbols(); k++) { String size = "" + d.getCount(k); if (size.length() > maxWidth) { maxWidth = size.length(); int sum = ("" + d.getSumOfCounts()).length(); if (sum > maxWidth) { maxWidth = sum; ((DiscreteEstimator) m_ClassDistribution).getProbability(i), maxWidth, 2).trim(); priorP = "(" + priorP + ")"; for (int i = 0; i < m_Instances.numClasses(); i++) { String priorP = Utils.doubleToString( ((DiscreteEstimator) m_ClassDistribution).getProbability(i), maxWidth, 2).trim(); priorP = "(" + priorP + ")"; for (int k = 0; k < m_Instances.numClasses(); k++) { DiscreteEstimator d = (DiscreteEstimator) m_Distributions[counter][k]; String count = "" + d.getCount(j); temp.append(pad(count, " ", maxWidth + 1 - count.length(), true)); for (int k = 0; k < m_Instances.numClasses(); k++) { DiscreteEstimator d = (DiscreteEstimator) m_Distributions[counter][k]; String count = "" + d.getSumOfCounts(); temp.append(pad(count, " ", maxWidth + 1 - count.length(), true));
for (int k = 0; k < d.getNumSymbols(); k++) { String size = Utils.doubleToString(d.getCount(k), maxWidth, 4) .trim(); if (size.length() > maxWidth) { int sum = Utils.doubleToString(d.getSumOfCounts(), maxWidth, 4) .trim().length(); if (sum > maxWidth) { for (int k = 0; k < m_num_clusters; k++) { DiscreteEstimator d = (DiscreteEstimator) m_model[k][i]; String count = Utils.doubleToString(d.getCount(j), maxWidth, 4) .trim(); temp.append(pad(count, " ", maxWidth + 1 - count.length(), true)); for (int k = 0; k < m_num_clusters; k++) { DiscreteEstimator d = (DiscreteEstimator) m_model[k][i]; String count = Utils.doubleToString(d.getSumOfCounts(), maxWidth, 4) .trim(); temp.append(pad(count, " ", maxWidth + 1 - count.length(), true));
/** * Constructor * * @param numSymbols the number of possible symbols (remember to include 0) * @param numCondSymbols the number of conditioning symbols * @param laplace if true, sub-estimators will use laplace */ public DDConditionalEstimator(int numSymbols, int numCondSymbols, boolean laplace) { m_Estimators = new DiscreteEstimator [numCondSymbols]; for(int i = 0; i < numCondSymbols; i++) { m_Estimators[i] = new DiscreteEstimator(numSymbols, laplace); } }
/** * Add a new data value to the current estimator. * * @param data the new data value * @param given the new value that data is conditional upon * @param weight the weight assigned to the data value */ public void addValue(double data, double given, double weight) { m_Estimators[(int)given].addValue(data, weight); }
for (int j = 0; j < m_num_attribs; j++) { if (m_theInstances.attribute(j).isNominal()) { model[ii][j] = new DiscreteEstimator(m_theInstances.attribute(j) .numValues(), false); } else { if (m_theInstances.attribute(j).isNominal()) { for (int k = 0; k < m_theInstances.attribute(j).numValues(); k++) { m_model[i][j].addValue(k, m.m_taskModel[i][j].getCount(k));
for (int j = 0; j < data.numAttributes(); j++) { if (data.attribute(j).isNominal()) { m_model[i][j] = new DiscreteEstimator(data.attribute(j).numValues(), true); if (!inst.isMissing(j)) { if (data.attribute(j).isNominal()) { m_model[cluster][j].addValue(inst.value(j), inst.weight()); } else { m_modelNormal[cluster][j][0] += inst.weight() * inst.value(j);
text.append(m_model[j][i].toString());
if (!inst.isMissing(j)) { if (inst.attribute(j).isNominal()) { logprob += Math.log(m_model[i][j].getProbability(inst.value(j))); } else { // numeric attribute logprob += logNormalDens(inst.value(j), m_modelNormal[i][j][0],
DiscreteEstimator newEst = new DiscreteEstimator(max + 1, true); + newEst.getProbability(current)); newEst.addValue(current, 1);
for (int k = 0; k < d.getNumSymbols(); k++) { String size = "" + d.getCount(k); if (size.length() > maxWidth) { maxWidth = size.length(); int sum = ("" + d.getSumOfCounts()).length(); if (sum > maxWidth) { maxWidth = sum; ((DiscreteEstimator) m_ClassDistribution).getProbability(i), maxWidth, 2).trim(); priorP = "(" + priorP + ")"; for (int i = 0; i < m_Instances.numClasses(); i++) { String priorP = Utils.doubleToString( ((DiscreteEstimator) m_ClassDistribution).getProbability(i), maxWidth, 2).trim(); priorP = "(" + priorP + ")"; for (int k = 0; k < m_Instances.numClasses(); k++) { DiscreteEstimator d = (DiscreteEstimator) m_Distributions[counter][k]; String count = "" + d.getCount(j); temp.append(pad(count, " ", maxWidth + 1 - count.length(), true)); for (int k = 0; k < m_Instances.numClasses(); k++) { DiscreteEstimator d = (DiscreteEstimator) m_Distributions[counter][k]; String count = "" + d.getSumOfCounts(); temp.append(pad(count, " ", maxWidth + 1 - count.length(), true));
for (int k = 0; k < d.getNumSymbols(); k++) { String size = Utils.doubleToString(d.getCount(k), maxWidth, 4) .trim(); if (size.length() > maxWidth) { int sum = Utils.doubleToString(d.getSumOfCounts(), maxWidth, 4) .trim().length(); if (sum > maxWidth) { for (int k = 0; k < m_num_clusters; k++) { DiscreteEstimator d = (DiscreteEstimator) m_model[k][i]; String count = Utils.doubleToString(d.getCount(j), maxWidth, 4) .trim(); temp.append(pad(count, " ", maxWidth + 1 - count.length(), true)); for (int k = 0; k < m_num_clusters; k++) { DiscreteEstimator d = (DiscreteEstimator) m_model[k][i]; String count = Utils.doubleToString(d.getSumOfCounts(), maxWidth, 4) .trim(); temp.append(pad(count, " ", maxWidth + 1 - count.length(), true));
/** * Get a probability estimator for a value * * @param given the new value that data is conditional upon * @return the estimator for the supplied value given the condition */ public Estimator getEstimator(double given) { Estimator result = new DiscreteEstimator(m_Estimators.length,false); for(int i = 0; i < m_Estimators.length; i++) { result.addValue(i,m_Weights.getProbability(i) *m_Estimators[i].getProbability(given)); } return result; }
/** * Constructor * * @param numSymbols the number of possible symbols (remember to include 0) * @param numCondSymbols the number of conditioning symbols * @param laplace if true, sub-estimators will use laplace */ public DDConditionalEstimator(int numSymbols, int numCondSymbols, boolean laplace) { m_Estimators = new DiscreteEstimator [numCondSymbols]; for(int i = 0; i < numCondSymbols; i++) { m_Estimators[i] = new DiscreteEstimator(numSymbols, laplace); } }
/** * Add a new data value to the current estimator. * * @param data the new data value * @param given the new value that data is conditional upon * @param weight the weight assigned to the data value */ public void addValue(double data, double given, double weight) { m_Estimators[(int)given].addValue(data, weight); }
for (int j = 0; j < m_num_attribs; j++) { if (m_theInstances.attribute(j).isNominal()) { model[ii][j] = new DiscreteEstimator(m_theInstances.attribute(j) .numValues(), false); } else { if (m_theInstances.attribute(j).isNominal()) { for (int k = 0; k < m_theInstances.attribute(j).numValues(); k++) { m_model[i][j].addValue(k, m.m_taskModel[i][j].getCount(k));
for (int j = 0; j < data.numAttributes(); j++) { if (data.attribute(j).isNominal()) { m_model[i][j] = new DiscreteEstimator(data.attribute(j).numValues(), true); if (!inst.isMissing(j)) { if (data.attribute(j).isNominal()) { m_model[cluster][j].addValue(inst.value(j), inst.weight()); } else { m_modelNormal[cluster][j][0] += inst.weight() * inst.value(j);