/** * Function to add all itemsets with unknown values for given attribute. * * @param source The dataset that contains all the itemsets. * @param attIndex The index of the attribute with possible unknown values. * @throws Exception */ public final void addWithUnknownValue(Dataset source, int attIndex) { double[] probs; double weight, newWeight; int classIndex; Itemset itemset; int j; probs = new double[perValue.length]; for (j = 0; j < perValue.length; j++) { // if ( Comparators.isEqual( total, 0 ) ) if (total == 0) { probs[j] = 1.0 / probs.length; } else { probs[j] = perValue[j] / total; } } Enumeration enum2 = source.enumerateItemsets(); while (enum2.hasMoreElements()) { itemset = (Itemset) enum2.nextElement(); if (itemset.isMissing(attIndex)) { classIndex = (int) itemset.getClassValue(); weight = itemset.getWeight(); perClass[classIndex] = perClass[classIndex] + weight; total = total + weight; for (j = 0; j < perValue.length; j++) { newWeight = probs[j] * weight; perClassPerValue[j][classIndex] = perClassPerValue[j][classIndex] + newWeight; perValue[j] = perValue[j] + newWeight; } } } }