mahout常用DistanceMeasure一览表:
org.apache.mahout.common.distance.ChebyshevDistanceMeasure;
org.apache.mahout.common.distance.CosineDistanceMeasure;
org.apache.mahout.common.distance.EuclideanDistanceMeasure;
org.apache.mahout.common.distance.MahalanobisDistanceMeasure;
org.apache.mahout.common.distance.ManhattanDistanceMeasure;
org.apache.mahout.common.distance.MinkowskiDistanceMeasure;
org.apache.mahout.common.distance.SquaredEuclideanDistanceMeasure;
org.apache.mahout.common.distance.TanimotoDistanceMeasure;
org.apache.mahout.common.distance.WeightedEuclideanDistanceMeasure;
org.apache.mahout.common.distance.WeightedManhattanDistanceMeasure;
比较常用的有两个欧氏距离和余弦
CosineDistanceMeasure:
EuclideanDistanceMeasure:
EuclideanDistanceMeasure和CosineDistanceMeasure区别见图:
其中有两个基于权重的距离计算方法:
org.apache.mahout.common.distance.WeightedEuclideanDistanceMeasure;
org.apache.mahout.common.distance.WeightedManhattanDistanceMeasure;
使用方式如下:
WeightedManhattanDistanceMeasure cdm = new WeightedManhattanDistanceMeasure();
cdm.setWeights(new DenseVector(new double[] {1, 2, 3 }));
System.out.println(cdm.distance(new DenseVector(new double[] {0.11, 510, 10 }),
new DenseVector(new double[] {0.11, 510, 1 })));
设置weight即可