public static double euclideanDistance (AbstractTableFactor f1, AbstractTableFactor f2) { double result = 0; // assumes same var set for (int loc = 0; loc < f1.numLocations (); loc++) { double val1 = f1.valueAtLocation (loc); double val2 = f2.value (f1.indexAtLocation (loc)); result += (val1 - val2) * (val1 - val2); } return Math.sqrt (result); }
public static double l1Distance (AbstractTableFactor f1, AbstractTableFactor f2) { double result = 0; // assumes same var set for (int loc = 0; loc < f1.numLocations (); loc++) { double val1 = f1.valueAtLocation (loc); double val2 = f2.value (f1.indexAtLocation (loc)); result += Math.abs (val1 - val2); } return result; }
public static double l1Distance (AbstractTableFactor f1, AbstractTableFactor f2) { double result = 0; // assumes same var set for (int loc = 0; loc < f1.numLocations (); loc++) { double val1 = f1.valueAtLocation (loc); double val2 = f2.value (f1.indexAtLocation (loc)); result += Math.abs (val1 - val2); } return result; }
public static double l1Distance (AbstractTableFactor f1, AbstractTableFactor f2) { double result = 0; // assumes same var set for (int loc = 0; loc < f1.numLocations (); loc++) { double val1 = f1.valueAtLocation (loc); double val2 = f2.value (f1.indexAtLocation (loc)); result += Math.abs (val1 - val2); } return result; }
public static double KL (AbstractTableFactor f1, AbstractTableFactor f2) { double result = 0; // assumes same var set for (int loc = 0; loc < f1.numLocations (); loc++) { double val1 = f1.valueAtLocation (loc); double val2 = f2.value (f1.indexAtLocation (loc)); if (val1 > 1e-5) { result += val1 * Math.log (val1 / val2); } } return result; }
public static double euclideanDistance (AbstractTableFactor f1, AbstractTableFactor f2) { double result = 0; // assumes same var set for (int loc = 0; loc < f1.numLocations (); loc++) { double val1 = f1.valueAtLocation (loc); double val2 = f2.value (f1.indexAtLocation (loc)); result += (val1 - val2) * (val1 - val2); } return Math.sqrt (result); }
public static double euclideanDistance (AbstractTableFactor f1, AbstractTableFactor f2) { double result = 0; // assumes same var set for (int loc = 0; loc < f1.numLocations (); loc++) { double val1 = f1.valueAtLocation (loc); double val2 = f2.value (f1.indexAtLocation (loc)); result += (val1 - val2) * (val1 - val2); } return Math.sqrt (result); }
public static double KL (AbstractTableFactor f1, AbstractTableFactor f2) { double result = 0; // assumes same var set for (int loc = 0; loc < f1.numLocations (); loc++) { double val1 = f1.valueAtLocation (loc); double val2 = f2.value (f1.indexAtLocation (loc)); if (val1 > 1e-5) { result += val1 * Math.log (val1 / val2); } } return result; }
public static double KL (AbstractTableFactor f1, AbstractTableFactor f2) { double result = 0; // assumes same var set for (int loc = 0; loc < f1.numLocations (); loc++) { double val1 = f1.valueAtLocation (loc); double val2 = f2.value (f1.indexAtLocation (loc)); if (val1 > 1e-5) { result += val1 * Math.log (val1 / val2); } } return result; }
for (int loc1 = 0; loc1 < ptl1.numLocations (); loc1++) { double val1 = ptl1.valueAtLocation (loc1); int idx = ptl1.indexAtLocation (loc1); double val2 = ptl2.value (idx); result.setRawValue (idx, weight * val1 + (1 - weight) * val2);
for (int loc1 = 0; loc1 < ptl1.numLocations (); loc1++) { double val1 = ptl1.valueAtLocation (loc1); int idx = ptl1.indexAtLocation (loc1); double val2 = ptl2.value (idx); result.setRawValue (idx, weight * val1 + (1 - weight) * val2);
for (int loc1 = 0; loc1 < ptl1.numLocations (); loc1++) { double val1 = ptl1.valueAtLocation (loc1); int idx = ptl1.indexAtLocation (loc1); double val2 = ptl2.value (idx); result.setRawValue (idx, weight * val1 + (1 - weight) * val2);