m_nominalToBinary.input(inst); inst = m_nominalToBinary.output(); m_removeUseless.input(inst); inst = m_removeUseless.output();
m_nominalToBinary.input(inst); inst = m_nominalToBinary.output(); m_removeUseless.input(inst); inst = m_removeUseless.output();
/** * Output class "probabilities". These need to be calibrated. */ public double[] distributionForInstance(Instance inst) throws Exception { // Filter instance m_RemoveUseless.input(inst); inst = m_RemoveUseless.output(); // Convert instance to matrix Vector instM = new DenseVector(inst.numAttributes() - 1); int index = 0; for (int i = 0; i < inst.numAttributes(); i++) { if (i != m_Data.classIndex()) { instM.set(index++, inst.value(i)); } } // Pipe output through sigmoid double[] dist = new double[2]; dist[1] = 1/(1 + Math.exp(instM.dot(m_Weights) - m_Threshold)); dist[0] = 1 - dist[1]; return dist; }
/** * Computes the distribution for a given instance * * @param instance the instance for which distribution is computed * @return the distribution * @throws Exception if the distribution can't be computed successfully */ @Override public double[] distributionForInstance(Instance instance) throws Exception { m_ReplaceMissingValues.input(instance); instance = m_ReplaceMissingValues.output(); m_AttFilter.input(instance); instance = m_AttFilter.output(); m_NominalToBinary.input(instance); instance = m_NominalToBinary.output(); // Extract the predictor columns into an array double[] instDat = new double[m_NumPredictors + 1]; int j = 1; instDat[0] = 1; for (int k = 0; k <= m_NumPredictors; k++) { if (k != m_ClassIndex) { instDat[j++] = instance.value(k); } } double[] distribution = evaluateProbability(instDat); return distribution; }
/** * Computes the distribution for a given instance * * @param instance the instance for which distribution is computed * @return the distribution * @throws Exception if the distribution can't be computed successfully */ @Override public double[] distributionForInstance(Instance instance) throws Exception { m_ReplaceMissingValues.input(instance); instance = m_ReplaceMissingValues.output(); m_AttFilter.input(instance); instance = m_AttFilter.output(); m_NominalToBinary.input(instance); instance = m_NominalToBinary.output(); // Extract the predictor columns into an array double[] instDat = new double[m_NumPredictors + 1]; int j = 1; instDat[0] = 1; for (int k = 0; k <= m_NumPredictors; k++) { if (k != m_ClassIndex) { instDat[j++] = instance.value(k); } } double[] distribution = evaluateProbability(instDat); return distribution; }
/** * 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; }
m_RemoveUseless.input(instance); instance =m_RemoveUseless.output(); m_RemoveUseless.batchFinished();