/** * Output class probabilities using Bayes' rule. */ public double[] distributionForInstance(Instance inst) throws Exception { // Filter instance m_RemoveUseless.input(inst); inst = m_RemoveUseless.output(); // Convert instance to array double[] values = new double[inst.numAttributes() - 1]; int index = 0; for (int i = 0; i < m_Data.numAttributes(); i++) { if (i != m_Data.classIndex()) { values[index++] = inst.value(i); } } double[] posteriorProbs = new double[m_Data.numClasses()]; for (int i = 0; i < m_Data.numClasses(); i++) { if (m_Estimators[i] != null) { posteriorProbs[i] = m_Estimators[i].logDensity(values) + m_LogPriors[i]; } else { posteriorProbs[i] = -Double.MAX_VALUE; } } posteriorProbs = Utils.logs2probs(posteriorProbs); return posteriorProbs; }
/** * Output class probabilities using Bayes' rule. */ public double[] distributionForInstance(Instance inst) throws Exception { // Filter instance m_RemoveUseless.input(inst); inst = m_RemoveUseless.output(); // Convert instance to array double[] posteriorProbs = new double[m_Data.numClasses()]; double[] values = new double[inst.numAttributes() - 1]; for (int i = 0; i < m_Data.numClasses(); i++) { if (m_Means[i] != null) { int index = 0; for (int j = 0; j < m_Data.numAttributes(); j++) { if (j != m_Data.classIndex()) { values[index] = inst.value(j) - m_Means[i][index] + m_GlobalMean[index]; index++; } } posteriorProbs[i] = m_Estimator.logDensity(values) + m_LogPriors[i]; } else { posteriorProbs[i] = -Double.MAX_VALUE; } } posteriorProbs = Utils.logs2probs(posteriorProbs); return posteriorProbs; }