/** * LabelCardinality - return the label cardinality of dataset D of L labels. */ public static final double labelCardinality(Instances D, int L) { double sum = 0.0; for(int i = 0; i < D.numInstances(); i++) { for(int j = 0; j < L; j++) { sum += D.instance(i).value(j); } } return (double)sum/(double)D.numInstances(); }
private Double getGold(Instance inst, Instances predictions) { Double gold; try { gold = new Double(inst.value(predictions.attribute( CLASS_ATTRIBUTE_NAME + WekaOutcomeHarmonizer.COMPATIBLE_OUTCOME_CLASS))); } catch (NullPointerException e) { // if train and test data have not been balanced gold = new Double(inst.value(predictions.attribute(CLASS_ATTRIBUTE_NAME))); } return gold; }
/** * ToIntArray - raw instance to int[] representation */ public static final int[] toIntArray(Instance x, int L) { int y[] = new int[L]; for(int j = 0; j < L; j++) { // added the following if-statement to change missing values to -1 if(x.isMissing(j)){ y[j] = -1; } else{ y[j] = (int)Math.round(x.value(j)); } } return y; }
/** * LabelCardinality - return the label cardinality of dataset D of L labels. */ public static final double labelCardinality(Instances D, int L) { double sum = 0.0; double numInstances = (double)D.numInstances(); for(int i = 0; i < D.numInstances(); i++) { for(int j = 0; j < L; j++) { if (!D.instance(i).isMissing(j)) { sum += D.instance(i).value(j); } } } return (double)sum/ numInstances; }
/** * Updates the minimum, maximum, sum, sumSquare values for all the attributes * * @param instance the new instance */ private void updateMinMax(Instance instance){ for (int j = 0; j < m_Train.numAttributes(); j++) { if(m_Train.classIndex() == j || m_Train.attribute(j).isNominal()) continue; if (instance.value(j) < m_MinArray[j]) m_MinArray[j] = instance.value(j); if (instance.value(j) > m_MaxArray[j]) m_MaxArray[j] = instance.value(j); } }
/** * LabelCardinality - return the label cardinality of dataset D of L labels. */ public static final double labelCardinality(Instances D, int L) { double sum = 0.0; double numInstances = (double)D.numInstances(); for(int i = 0; i < D.numInstances(); i++) { for(int j = 0; j < L; j++) { if (!D.instance(i).isMissing(j)) { sum += D.instance(i).value(j); } } } return (double)sum/ numInstances; }
public void testLog() { m_Filter = getFilter("log(a6/5)"); Instances result = useFilter(); for (int i = 0; i < result.numInstances(); i++) { Instance inst = result.instance(i); if (inst.value(5) != 0) { assertEquals("Instance " + (i + 1), Math.log(inst.value(5)/5), inst.value(inst.numAttributes() - 1), EXPR_DELTA); } } }
/** * ToIntArray - raw instance to int[] representation */ public static final int[] toIntArray(Instance x, int L) { int y[] = new int[L]; for(int j = 0; j < L; j++) { // added the following if-statement to change missing values to -1 if(x.isMissing(j)){ y[j] = -1; } else{ y[j] = (int)Math.round(x.value(j)); } } return y; }
/** * Updates the minimum and maximum values for all the attributes based on a * new exemplar. * * @param ex the new exemplar */ private void updateMinMax(Instance ex) { Instances insts = ex.relationalValue(1); for (int j = 0; j < m_Dimension; j++) { if (insts.attribute(j).isNumeric()) { for (int k = 0; k < insts.numInstances(); k++) { Instance ins = insts.instance(k); if (!ins.isMissing(j)) { if (Double.isNaN(m_MinArray[j])) { m_MinArray[j] = ins.value(j); m_MaxArray[j] = ins.value(j); } else { if (ins.value(j) < m_MinArray[j]) { m_MinArray[j] = ins.value(j); } else if (ins.value(j) > m_MaxArray[j]) { m_MaxArray[j] = ins.value(j); } } } } } } }
public void testAbs() { m_Filter = getFilter("abs(a6-a3)"); Instances result = useFilter(); for (int i = 0; i < result.numInstances(); i++) { Instance inst = result.instance(i); assertEquals("Instance " + (i + 1), Math.abs(inst.value(5) - inst.value(2)), inst.value(inst.numAttributes() - 1), EXPR_DELTA); } }
public final int whichSubset(Instance instance) throws Exception { if (instance.isMissing(m_attIndex)) return -1; else{ if (instance.attribute(m_attIndex).isNominal()) return (int)instance.value(m_attIndex); else if (Utils.smOrEq(instance.value(m_attIndex),m_splitPoint)) return 0; else return 1; } }
/** * jPMF - Joint PMF. * @return the joint PMF of the j-th and k-th labels in D. */ public static double[][] jPMF(Instances D, int j, int k) { double JOINT[][] = new double[D.attribute(j).numValues()][D.attribute(k).numValues()]; int N = D.numInstances(); for(int i = 0; i < N; i++) { int v_j = (int)Math.round(D.instance(i).value(j)); int v_k = (int)Math.round(D.instance(i).value(k)); JOINT[v_j][v_k] += (1.0 / (double)N); } return JOINT; }
public void testExp() { m_Filter = getFilter("exp(a6-a3)"); Instances result = useFilter(); for (int i = 0; i < result.numInstances(); i++) { Instance inst = result.instance(i); assertEquals("Instance " + (i + 1), Math.exp(inst.value(5) - inst.value(2)), inst.value(inst.numAttributes() - 1), EXPR_DELTA); } }
public final int whichSubset(Instance instance) throws Exception { if (instance.isMissing(m_attIndex)) return -1; else{ if (instance.attribute(m_attIndex).isNominal()) return (int)instance.value(m_attIndex); else if (Utils.smOrEq(instance.value(m_attIndex),m_splitPoint)) return 0; else return 1; } }
/** * jPMF - Joint PMF. * @return the joint PMF of the j-th and k-th labels in D. */ public static double[][] jPMF(Instances D, int j, int k) { double JOINT[][] = new double[D.attribute(j).numValues()][D.attribute(k).numValues()]; int N = D.numInstances(); for(int i = 0; i < N; i++) { int v_j = (int)Math.round(D.instance(i).value(j)); int v_k = (int)Math.round(D.instance(i).value(k)); JOINT[v_j][v_k] += (1.0 / (double)N); } return JOINT; }