List of usage examples for org.apache.commons.math.util MathUtils distance
public static double distance(int[] p1, int[] p2)
From source file:acromusashi.stream.ml.anomaly.lof.LofCalculator.java
/** * basePoint?targetPoint?????(Reachability distance)? * /* w ww. j a v a2s. c om*/ * @param basePoint * @param targetPoint * @return ??? */ protected static double calculateReachDistance(LofPoint basePoint, LofPoint targetPoint) { double distance = MathUtils.distance(basePoint.getDataPoint(), targetPoint.getDataPoint()); double reachDistance = (double) ComparatorUtils.max(distance, targetPoint.getkDistance(), ComparatorUtils.NATURAL_COMPARATOR); return reachDistance; }
From source file:acromusashi.stream.ml.anomaly.lof.LofCalculator.java
/** * ??????????????????/* w ww . j a v a 2 s . c o m*/ * * @param targetPoint * @param dataSet * @return ???ID?????? */ protected static List<DistanceResult> calculateDistances(LofPoint targetPoint, LofDataSet dataSet) { List<DistanceResult> distances = new ArrayList<>(); for (Map.Entry<String, LofPoint> targetEntry : dataSet.getDataMap().entrySet()) { // ???? if (StringUtils.equals(targetEntry.getKey(), targetPoint.getDataId()) == true) { continue; } double distance = MathUtils.distance(targetEntry.getValue().getDataPoint(), targetPoint.getDataPoint()); DistanceResult result = new DistanceResult(targetEntry.getKey(), distance); // ????? distances.add(result); } Collections.sort(distances, new DistanceResultComparator()); return distances; }
From source file:acromusashi.stream.ml.clustering.kmeans.KmeansCalculator.java
/** * ????????//w ww .java 2 s . co m * * @param baseCentroids ? * @param targetCentroids ? * @param centroidNum * @return ? */ protected static List<CentroidMapping> calculateDistances(double[][] baseCentroids, double[][] targetCentroids, int centroidNum) { // ??????? List<CentroidMapping> allDistance = new ArrayList<>(); for (int baseIndex = 0; baseIndex < centroidNum; baseIndex++) { for (int targetIndex = 0; targetIndex < centroidNum; targetIndex++) { CentroidMapping centroidMapping = new CentroidMapping(); centroidMapping.setBaseIndex(baseIndex); centroidMapping.setTargetIndex(targetIndex); double distance = MathUtils.distance(baseCentroids[baseIndex], targetCentroids[targetIndex]); centroidMapping.setEuclideanDistance(distance); allDistance.add(centroidMapping); } } return allDistance; }