ContingencyTables.chiSquared(matrix, false)); System.out.println("Chi-squared value: " + ContingencyTables.chiVal(matrix, false)); System.out.println("Cochran's criterion fullfilled: " + ContingencyTables.cochransCriterion(matrix)); System.out.println("Cramer's V: " + ContingencyTables.CramersV(matrix)); System.out.println("Entropy of first row: " + ContingencyTables.entropy(firstRow)); System.out.println("Entropy conditioned on columns: " + ContingencyTables.entropyConditionedOnColumns(matrix)); System.out.println("Entropy conditioned on rows: " + ContingencyTables.entropyConditionedOnRows(matrix)); System.out.println("Entropy conditioned on rows (with Laplace): " + ContingencyTables.entropyConditionedOnRows(matrix, matrix, 3)); System.out.println("Entropy of rows: " + ContingencyTables.entropyOverRows(matrix)); System.out.println("Entropy of columns: " + ContingencyTables.entropyOverColumns(matrix)); System.out.println("Gain ratio: " + ContingencyTables.gainRatio(matrix)); System.out.println("Negative log2 of multiple hypergeometric probability: " + ContingencyTables.log2MultipleHypergeometric(matrix)); System.out.println("Symmetrical uncertainty: " + ContingencyTables.symmetricalUncertainty(matrix)); System.out.println("Tau value: " + ContingencyTables.tauVal(matrix)); double[][] newMatrix = new double[3][3]; newMatrix[0][0] = 1; newMatrix[0][1] = 0; newMatrix[0][2] = 1;
public double getInfoGain() { return ContingencyTables.entropyOverColumns(getContingencyTable()) - ContingencyTables .entropyConditionedOnRows(getContingencyTable()); }
priorEntropy = ContingencyTables.entropy(priorCounts); entropy = ContingencyTables.entropyConditionedOnRows(bestCounts); entropyLeft = ContingencyTables.entropy(bestCounts[0]); entropyRight = ContingencyTables.entropy(bestCounts[1]);
/** * Computes value of splitting criterion after split. * * @param dist the distributions * @param priorVal the splitting criterion * @return the gain after the split */ protected double gain(double[][] dist, double priorVal) { return priorVal - ContingencyTables.entropyConditionedOnRows(dist); }
for (int i = 0; i < data.numAttributes(); i++) { if (i != classIndex) { m_ChiSquareds[i] = ContingencyTables.chiVal( ContingencyTables.reduceMatrix(counts[i]), false);
/** * Returns chi-squared probability for a given matrix. * * @param matrix the contigency table * @param yates is Yates' correction to be used? * @return the chi-squared probability */ public static double chiSquared(double [][] matrix, boolean yates) { int df = (matrix.length - 1) * (matrix[0].length - 1); return Statistics.chiSquaredProbability(chiVal(matrix, yates), df); }
return ContingencyTables.symmetricalUncertainty(counts);
/** * Computes value of splitting criterion before split. * * @param dist the distributions * @return the splitting criterion */ protected double priorVal(double[][] dist) { return ContingencyTables.entropyOverColumns(dist); }
if (Utils.gr(ctotal[col], 0)) { expect = (ctotal[col] * rtotal[row]) / n; chival += chiCell (matrix[row][col], expect, yates);
contingencyTable[1][1] = (numTransactions - premise.m_counter - consequenceUnconditionedCounter + consequence.m_counter); chiSquared = ContingencyTables.chiSquared(contingencyTable, false);
priorEntropy = ContingencyTables.entropy(priorCounts); entropy = ContingencyTables.entropyConditionedOnRows(bestCounts); entropyLeft = ContingencyTables.entropy(bestCounts[0]); entropyRight = ContingencyTables.entropy(bestCounts[1]);
for (int i = 0; i < data.numAttributes(); i++) { if (i != classIndex) { m_InfoGains[i] = (ContingencyTables.entropyOverColumns(counts[i]) - ContingencyTables .entropyConditionedOnRows(counts[i]));
/** * Computes value of splitting criterion after split. * * @param dist * @param priorVal the splitting criterion * @return the gain after splitting */ protected double gain(double[][] dist, double priorVal) { return priorVal - ContingencyTables.entropyConditionedOnRows(dist); }
/** * Calculates entrpy for given model and data. */ protected double entropy(MM mixtureModel) { double entropy = 0; for (int j = 0; j < m_NumValues; j++) { entropy += m_Weights[j] * ContingencyTables.entropy(Utils.logs2probs(mixtureModel.logJointDensities(m_Values[j]))); } entropy *= Utils.log2; // Need natural logarithm, not base-2 logarithm return entropy / (double)m_NumValues; }
/** * Returns chi-squared probability for a given matrix. * * @param matrix the contigency table * @param yates is Yates' correction to be used? * @return the chi-squared probability */ public static double chiSquared(double [][] matrix, boolean yates) { int df = (matrix.length - 1) * (matrix[0].length - 1); return Statistics.chiSquaredProbability(chiVal(matrix, yates), df); }
return ContingencyTables.symmetricalUncertainty(counts);
/** * Computes value of splitting criterion before split. * * @param dist * @return the splitting criterion */ protected double priorVal(double[][] dist) { return ContingencyTables.entropyOverColumns(dist); }
if (Utils.gr(ctotal[col], 0)) { expect = (ctotal[col] * rtotal[row]) / n; chival += chiCell (matrix[row][col], expect, yates);
contingencyTable[1][1] = (numTransactions - premise.m_counter - consequenceUnconditionedCounter + consequence.m_counter); chiSquared = ContingencyTables.chiSquared(contingencyTable, false);