Esempio n. 1
0
 /*
  * Save in "ancient" text format. Extremely inefficient for large files. Keeping this for documentation purposes only.
  */
 private void saveDistanceMatrix() throws IOException {
   PrintWriter out = new PrintWriter(new BufferedOutputStream(new FileOutputStream(distFile)));
   for (int i = 0; i < fv.length; i++) {
     for (int j = 0; j < fv.length; j++) {
       float distance = (i == j ? 0f : distMeasure.squaredDistance(fv[i], fv[j]));
       out.printf(Locale.US, "%.1f ", distance);
     }
     out.print("\n");
   }
   out.flush();
   out.close();
 }
  @Test(expected = IllegalArgumentException.class)
  public void testVectorDistance() {
    DistanceMeasure distanceMeasure = new CosineDistanceMeasure();

    Vector v1 = new Vector();
    Vector v2 = new Vector();

    v1.add(Real.valueOf(4.0));
    v1.add(Real.valueOf(3.0));
    v1.add(Real.valueOf(2.0));

    v2.add(Real.valueOf(2.0));
    v2.add(Real.valueOf(3.0));
    v2.add(Real.valueOf(4.0));

    double distance = distanceMeasure.distance(v1, v2);
    assertTrue(distance >= -1 && distance <= 1);
    assertEquals(1 - (25.0 / 29.0), distance, 0.000000000000001);

    v1.add(Real.valueOf(22.0));

    distanceMeasure.distance(v1, v2);
  }
Esempio n. 3
0
 /* Save in efficient binary format. */
 private void binarySaveDistanceMatrix() throws IOException {
   DataOutputStream out =
       new DataOutputStream(new BufferedOutputStream(new FileOutputStream(distFile)));
   out.writeBytes("EST_File fmatrix\n");
   out.writeBytes("version 1\n");
   out.writeBytes("DataType binary\n");
   out.writeBytes("ByteOrder BigEndian\n");
   out.writeBytes("rows " + fv.length + "\n");
   out.writeBytes("columns " + fv.length + "\n");
   out.writeBytes("EST_Header_End\n");
   for (int i = 0; i < fv.length; i++) {
     for (int j = 0; j < fv.length; j++) {
       float distance = (i == j ? 0f : distMeasure.squaredDistance(fv[i], fv[j]));
       out.writeFloat(distance);
     }
   }
   out.flush();
   out.close();
 }