protected double[] initOutcomeTotals(String[] outcomeNames, Context[] params) { double[] outcomeTotals = new double[outcomeNames.length]; for (int i = 0; i < params.length; ++i) { Context context = params[i]; for (int j = 0; j < context.getOutcomes().length; ++j) { int outcome = context.getOutcomes()[j]; double count = context.getParameters()[j]; outcomeTotals[outcome] += count; } } return outcomeTotals; }
/** * Reads the parameters from a file and populates an array of context objects. * @param outcomePatterns The outcomes patterns for the model. The first index refers to which * outcome pattern (a set of outcomes that occurs with a context) is being specified. The * second index specifies the number of contexts which use this pattern at index 0, and the * index of each outcomes which make up this pattern in indicies 1-n. * @return An array of context objects. * @throws java.io.IOException when the model file does not match the outcome patterns or can not be read. */ protected Context[] getParameters(int[][] outcomePatterns) throws java.io.IOException { Context[] params = new Context[NUM_PREDS]; int pid = 0; for (int i = 0; i < outcomePatterns.length; i++) { //construct outcome pattern int[] outcomePattern = new int[outcomePatterns[i].length - 1]; System.arraycopy(outcomePatterns[i], 1, outcomePattern, 0, outcomePatterns[i].length - 1); //populate parameters for each context which uses this outcome pattern. for (int j = 0; j < outcomePatterns[i][0]; j++) { double[] contextParameters = new double[outcomePatterns[i].length - 1]; for (int k = 1; k < outcomePatterns[i].length; k++) { contextParameters[k - 1] = readDouble(); } params[pid] = new Context(outcomePattern,contextParameters); pid++; } } return params; }
Assert.assertArrayEquals(nevilleFalseExpected, predMap.get(predicateToTest).getParameters(), 0.01); predicateToTest = "Neville=true"; Assert.assertArrayEquals(nevilleTrueExpected, predMap.get(predicateToTest).getParameters(), 0.001); Assert.assertArrayEquals(nevilleFalseExpected, predMap.get(predicateToTest).getParameters(), 0.01); predicateToTest = "Neville=true"; Assert.assertArrayEquals(nevilleTrueExpected, predMap.get(predicateToTest).getParameters(), 0.001);
public static void sumFeatures(Context[] context, float[] values, double[] prior) { for (int ci = 0; ci < context.length; ci++) { if (context[ci] != null) { Context predParams = context[ci]; int[] activeOutcomes = predParams.getOutcomes(); double[] activeParameters = predParams.getParameters(); double value = 1; if (values != null) { value = values[ci]; } for (int ai = 0; ai < activeOutcomes.length; ai++) { int oid = activeOutcomes[ai]; prior[oid] += activeParameters[ai] * value; } } } }
alpha.add(val); params[ci] = new Context(ArrayMath.toIntArray(outcomePattern), ArrayMath.toDoubleArray(alpha));
protected ComparablePredicate[] sortValues() { ComparablePredicate[] sortPreds = new ComparablePredicate[PARAMS.length]; int numParams = 0; for (int pid = 0; pid < PARAMS.length; pid++) { int[] predkeys = PARAMS[pid].getOutcomes(); // Arrays.sort(predkeys); int numActive = predkeys.length; double[] activeParams = PARAMS[pid].getParameters(); numParams += numActive; /* * double[] activeParams = new double[numActive]; * * int id = 0; for (int i=0; i < predkeys.length; i++) { int oid = * predkeys[i]; activeOutcomes[id] = oid; activeParams[id] = * PARAMS[pid].getParams(oid); id++; } */ sortPreds[pid] = new ComparablePredicate(PRED_LABELS[pid], predkeys, activeParams); } Arrays.sort(sortPreds); return sortPreds; }
/** * Reads the parameters from a file and populates an array of context objects. * @param outcomePatterns The outcomes patterns for the model. The first index refers to which * outcome pattern (a set of outcomes that occurs with a context) is being specified. The * second index specifies the number of contexts which use this pattern at index 0, and the * index of each outcomes which make up this pattern in indicies 1-n. * @return An array of context objects. * @throws java.io.IOException when the model file does not match the outcome patterns or can not be read. */ protected Context[] getParameters(int[][] outcomePatterns) throws java.io.IOException { Context[] params = new Context[NUM_PREDS]; int pid = 0; for (int i = 0; i < outcomePatterns.length; i++) { //construct outcome pattern int[] outcomePattern = new int[outcomePatterns[i].length - 1]; System.arraycopy(outcomePatterns[i], 1, outcomePattern, 0, outcomePatterns[i].length - 1); //populate parameters for each context which uses this outcome pattern. for (int j = 0; j < outcomePatterns[i][0]; j++) { double[] contextParameters = new double[outcomePatterns[i].length - 1]; for (int k = 1; k < outcomePatterns[i].length; k++) { contextParameters[k - 1] = readDouble(); } params[pid] = new Context(outcomePattern,contextParameters); pid++; } } return params; }
protected ComparablePredicate[] sortValues() { ComparablePredicate[] sortPreds = new ComparablePredicate[PARAMS.length]; int numParams = 0; for (int pid = 0; pid < PARAMS.length; pid++) { int[] predkeys = PARAMS[pid].getOutcomes(); // Arrays.sort(predkeys); int numActive = predkeys.length; double[] activeParams = PARAMS[pid].getParameters(); numParams += numActive; /* * double[] activeParams = new double[numActive]; * * int id = 0; for (int i=0; i < predkeys.length; i++) { int oid = * predkeys[i]; activeOutcomes[id] = oid; activeParams[id] = * PARAMS[pid].getParams(oid); id++; } */ sortPreds[pid] = new ComparablePredicate(PRED_LABELS[pid], predkeys, activeParams); } Arrays.sort(sortPreds); return sortPreds; }
/** * Reads the parameters from a file and populates an array of context objects. * @param outcomePatterns The outcomes patterns for the model. The first index refers to which * outcome pattern (a set of outcomes that occurs with a context) is being specified. The * second index specifies the number of contexts which use this pattern at index 0, and the * index of each outcomes which make up this pattern in indicies 1-n. * @return An array of context objects. * @throws java.io.IOException when the model file does not match the outcome patterns or can not be read. */ protected Context[] getParameters(int[][] outcomePatterns) throws java.io.IOException { Context[] params = new Context[NUM_PREDS]; int pid = 0; for (int i = 0; i < outcomePatterns.length; i++) { //construct outcome pattern int[] outcomePattern = new int[outcomePatterns[i].length - 1]; System.arraycopy(outcomePatterns[i], 1, outcomePattern, 0, outcomePatterns[i].length - 1); //populate parameters for each context which uses this outcome pattern. for (int j = 0; j < outcomePatterns[i][0]; j++) { double[] contextParameters = new double[outcomePatterns[i].length - 1]; for (int k = 1; k < outcomePatterns[i].length; k++) { contextParameters[k - 1] = readDouble(); } params[pid] = new Context(outcomePattern,contextParameters); pid++; } } return params; }
double[] predParams = PARAMS[pid].getParameters(); int[] outcomePattern = PARAMS[pid].getOutcomes(); for (int pi = 0; pi < predParams.length; pi++) { if (predParams[pi] != 0d) {
alpha.add(val); params[ci] = new Context(ArrayMath.toIntArray(outcomePattern), ArrayMath.toDoubleArray(alpha));
if (values != null) predValue = values[ci]; double[] parameters = pred.getParameters(); int[] outcomes = pred.getOutcomes(); for (int i = 0; i < outcomes.length; i++) { int oi = outcomes[i];
alpha.add(val); params[ci] = new Context(ArrayMath.toIntArray(outcomePattern), ArrayMath.toDoubleArray(alpha));
if (context[ci] != null) { Context predParams = context[ci]; activeOutcomes = predParams.getOutcomes(); activeParameters = predParams.getParameters(); if (values != null) { value = values[ci];
protected double[] initOutcomeTotals(String[] outcomeNames, Context[] params) { double[] outcomeTotals = new double[outcomeNames.length]; for (int i = 0; i < params.length; ++i) { Context context = params[i]; for (int j = 0; j < context.getOutcomes().length; ++j) { int outcome = context.getOutcomes()[j]; double count = context.getParameters()[j]; outcomeTotals[outcome] += count; } } return outcomeTotals; }
protected double[] initOutcomeTotals(String[] outcomeNames, Context[] params) { double[] outcomeTotals = new double[outcomeNames.length]; for (int i = 0; i < params.length; ++i) { Context context = params[i]; for (int j = 0; j < context.getOutcomes().length; ++j) { int outcome = context.getOutcomes()[j]; double count = context.getParameters()[j]; outcomeTotals[outcome] += count; } } return outcomeTotals; }
public static void sumFeatures(Context[] context, float[] values, double[] prior) { for (int ci = 0; ci < context.length; ci++) { if (context[ci] != null) { Context predParams = context[ci]; int[] activeOutcomes = predParams.getOutcomes(); double[] activeParameters = predParams.getParameters(); double value = 1; if (values != null) { value = values[ci]; } for (int ai = 0; ai < activeOutcomes.length; ai++) { int oid = activeOutcomes[ai]; prior[oid] += activeParameters[ai] * value; } } } }
protected ComparablePredicate[] sortValues() { ComparablePredicate[] sortPreds = new ComparablePredicate[PARAMS.length]; int numParams = 0; for (int pid = 0; pid < PARAMS.length; pid++) { int[] predkeys = PARAMS[pid].getOutcomes(); // Arrays.sort(predkeys); int numActive = predkeys.length; double[] activeParams = PARAMS[pid].getParameters(); numParams += numActive; /* * double[] activeParams = new double[numActive]; * * int id = 0; for (int i=0; i < predkeys.length; i++) { int oid = * predkeys[i]; activeOutcomes[id] = oid; activeParams[id] = * PARAMS[pid].getParams(oid); id++; } */ sortPreds[pid] = new ComparablePredicate(PRED_LABELS[pid], predkeys, activeParams); } Arrays.sort(sortPreds); return sortPreds; }
protected ComparablePredicate[] sortValues() { ComparablePredicate[] sortPreds = new ComparablePredicate[PARAMS.length]; int numParams = 0; for (int pid = 0; pid < PARAMS.length; pid++) { int[] predkeys = PARAMS[pid].getOutcomes(); // Arrays.sort(predkeys); int numActive = predkeys.length; double[] activeParams = PARAMS[pid].getParameters(); numParams += numActive; /* * double[] activeParams = new double[numActive]; * * int id = 0; for (int i=0; i < predkeys.length; i++) { int oid = * predkeys[i]; activeOutcomes[id] = oid; activeParams[id] = * PARAMS[pid].getParams(oid); id++; } */ sortPreds[pid] = new ComparablePredicate(PRED_LABELS[pid], predkeys, activeParams); } Arrays.sort(sortPreds); return sortPreds; }
protected ComparablePredicate[] sortValues() { ComparablePredicate[] sortPreds = new ComparablePredicate[PARAMS.length]; int numParams = 0; for (int pid = 0; pid < PARAMS.length; pid++) { int[] predkeys = PARAMS[pid].getOutcomes(); // Arrays.sort(predkeys); int numActive = predkeys.length; double[] activeParams = PARAMS[pid].getParameters(); numParams += numActive; /* * double[] activeParams = new double[numActive]; * * int id = 0; for (int i=0; i < predkeys.length; i++) { int oid = * predkeys[i]; activeOutcomes[id] = oid; activeParams[id] = * PARAMS[pid].getParams(oid); id++; } */ sortPreds[pid] = new ComparablePredicate(PRED_LABELS[pid], predkeys, activeParams); } Arrays.sort(sortPreds); return sortPreds; }