Search in sources :

Example 11 with EuclideanDistance

use of org.apache.ignite.ml.math.distances.EuclideanDistance in project ignite by apache.

the class KNNMultipleLinearRegressionTest method testLonglyWithWeightedStrategyAndNormalization.

/**
 */
public void testLonglyWithWeightedStrategyAndNormalization() {
    y = new double[] { 60323, 61122, 60171, 61187, 63221, 63639, 64989, 63761, 66019, 68169, 66513, 68655, 69564, 69331, 70551 };
    x = new double[15][];
    x[0] = new double[] { 83.0, 234289, 2356, 1590, 107608, 1947 };
    x[1] = new double[] { 88.5, 259426, 2325, 1456, 108632, 1948 };
    x[2] = new double[] { 88.2, 258054, 3682, 1616, 109773, 1949 };
    x[3] = new double[] { 89.5, 284599, 3351, 1650, 110929, 1950 };
    x[4] = new double[] { 96.2, 328975, 2099, 3099, 112075, 1951 };
    x[5] = new double[] { 98.1, 346999, 1932, 3594, 113270, 1952 };
    x[6] = new double[] { 99.0, 365385, 1870, 3547, 115094, 1953 };
    x[7] = new double[] { 100.0, 363112, 3578, 3350, 116219, 1954 };
    x[8] = new double[] { 101.2, 397469, 2904, 3048, 117388, 1955 };
    x[9] = new double[] { 108.4, 442769, 2936, 2798, 120445, 1957 };
    x[10] = new double[] { 110.8, 444546, 4681, 2637, 121950, 1958 };
    x[11] = new double[] { 112.6, 482704, 3813, 2552, 123366, 1959 };
    x[12] = new double[] { 114.2, 502601, 3931, 2514, 125368, 1960 };
    x[13] = new double[] { 115.7, 518173, 4806, 2572, 127852, 1961 };
    x[14] = new double[] { 116.9, 554894, 4007, 2827, 130081, 1962 };
    IgniteUtils.setCurrentIgniteName(ignite.configuration().getIgniteInstanceName());
    LabeledDataset training = new LabeledDataset(x, y);
    final LabeledDataset normalizedTrainingDataset = (LabeledDataset) Normalizer.normalizeWithMiniMax(training);
    KNNMultipleLinearRegression knnMdl = new KNNMultipleLinearRegression(5, new EuclideanDistance(), KNNStrategy.WEIGHTED, normalizedTrainingDataset);
    Vector vector = new DenseLocalOnHeapVector(new double[] { 104.6, 419180, 2822, 2857, 118734, 1956 });
    System.out.println(knnMdl.apply(vector));
    Assert.assertEquals(67857, knnMdl.apply(vector), 2000);
}
Also used : EuclideanDistance(org.apache.ignite.ml.math.distances.EuclideanDistance) KNNMultipleLinearRegression(org.apache.ignite.ml.knn.regression.KNNMultipleLinearRegression) DenseLocalOnHeapVector(org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector) LabeledDataset(org.apache.ignite.ml.structures.LabeledDataset) Vector(org.apache.ignite.ml.math.Vector) SparseBlockDistributedVector(org.apache.ignite.ml.math.impls.vector.SparseBlockDistributedVector) DenseLocalOnHeapVector(org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector)

Example 12 with EuclideanDistance

use of org.apache.ignite.ml.math.distances.EuclideanDistance in project ignite by apache.

the class KNNMultipleLinearRegressionTest method testLonglyWithNormalization.

/**
 */
public void testLonglyWithNormalization() {
    y = new double[] { 60323, 61122, 60171, 61187, 63221, 63639, 64989, 63761, 66019, 68169, 66513, 68655, 69564, 69331, 70551 };
    x = new double[15][];
    x[0] = new double[] { 83.0, 234289, 2356, 1590, 107608, 1947 };
    x[1] = new double[] { 88.5, 259426, 2325, 1456, 108632, 1948 };
    x[2] = new double[] { 88.2, 258054, 3682, 1616, 109773, 1949 };
    x[3] = new double[] { 89.5, 284599, 3351, 1650, 110929, 1950 };
    x[4] = new double[] { 96.2, 328975, 2099, 3099, 112075, 1951 };
    x[5] = new double[] { 98.1, 346999, 1932, 3594, 113270, 1952 };
    x[6] = new double[] { 99.0, 365385, 1870, 3547, 115094, 1953 };
    x[7] = new double[] { 100.0, 363112, 3578, 3350, 116219, 1954 };
    x[8] = new double[] { 101.2, 397469, 2904, 3048, 117388, 1955 };
    x[9] = new double[] { 108.4, 442769, 2936, 2798, 120445, 1957 };
    x[10] = new double[] { 110.8, 444546, 4681, 2637, 121950, 1958 };
    x[11] = new double[] { 112.6, 482704, 3813, 2552, 123366, 1959 };
    x[12] = new double[] { 114.2, 502601, 3931, 2514, 125368, 1960 };
    x[13] = new double[] { 115.7, 518173, 4806, 2572, 127852, 1961 };
    x[14] = new double[] { 116.9, 554894, 4007, 2827, 130081, 1962 };
    IgniteUtils.setCurrentIgniteName(ignite.configuration().getIgniteInstanceName());
    LabeledDataset training = new LabeledDataset(x, y);
    final LabeledDataset normalizedTrainingDataset = (LabeledDataset) Normalizer.normalizeWithMiniMax(training);
    KNNMultipleLinearRegression knnMdl = new KNNMultipleLinearRegression(5, new EuclideanDistance(), KNNStrategy.SIMPLE, normalizedTrainingDataset);
    Vector vector = new DenseLocalOnHeapVector(new double[] { 104.6, 419180, 2822, 2857, 118734, 1956 });
    System.out.println(knnMdl.apply(vector));
    Assert.assertEquals(67857, knnMdl.apply(vector), 2000);
}
Also used : EuclideanDistance(org.apache.ignite.ml.math.distances.EuclideanDistance) KNNMultipleLinearRegression(org.apache.ignite.ml.knn.regression.KNNMultipleLinearRegression) DenseLocalOnHeapVector(org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector) LabeledDataset(org.apache.ignite.ml.structures.LabeledDataset) Vector(org.apache.ignite.ml.math.Vector) SparseBlockDistributedVector(org.apache.ignite.ml.math.impls.vector.SparseBlockDistributedVector) DenseLocalOnHeapVector(org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector)

Example 13 with EuclideanDistance

use of org.apache.ignite.ml.math.distances.EuclideanDistance in project ignite by apache.

the class FuzzyCMeansLocalClustererTest method checkCentersOfTheSamePointsTwoDimensions.

/**
 * Test FCM on points which have the equal coordinates.
 */
@Test
public void checkCentersOfTheSamePointsTwoDimensions() {
    FuzzyCMeansLocalClusterer clusterer = new FuzzyCMeansLocalClusterer(new EuclideanDistance(), 2, BaseFuzzyCMeansClusterer.StopCondition.STABLE_MEMBERSHIPS, 0.01, 10, null);
    double[][] points = new double[][] { { 3.3, 10 }, { 3.3, 10 }, { 3.3, 10 }, { 3.3, 10 }, { 3.3, 10 } };
    DenseLocalOnHeapMatrix pntMatrix = new DenseLocalOnHeapMatrix(points);
    int k = 2;
    FuzzyCMeansModel mdl = clusterer.cluster(pntMatrix, k);
    Vector exp = new DenseLocalOnHeapVector(new double[] { 3.3, 10 });
    for (int i = 0; i < k; i++) {
        Vector center = mdl.centers()[i];
        for (int j = 0; j < 2; j++) assertEquals(exp.getX(j), center.getX(j), 1);
    }
}
Also used : EuclideanDistance(org.apache.ignite.ml.math.distances.EuclideanDistance) DenseLocalOnHeapVector(org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector) DenseLocalOnHeapMatrix(org.apache.ignite.ml.math.impls.matrix.DenseLocalOnHeapMatrix) Vector(org.apache.ignite.ml.math.Vector) DenseLocalOnHeapVector(org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector) Test(org.junit.Test)

Example 14 with EuclideanDistance

use of org.apache.ignite.ml.math.distances.EuclideanDistance in project ignite by apache.

the class FuzzyCMeansLocalClustererTest method equalWeightsTwoDimensions.

/**
 * Test FCM on points that forms four clusters on the plane.
 */
@Test
public void equalWeightsTwoDimensions() {
    FuzzyCMeansLocalClusterer clusterer = new FuzzyCMeansLocalClusterer(new EuclideanDistance(), 2, BaseFuzzyCMeansClusterer.StopCondition.STABLE_CENTERS, 0.01, 20, null);
    double[][] points = new double[][] { { -10, -10 }, { -9, -11 }, { -10, -9 }, { -11, -9 }, { 10, 10 }, { 9, 11 }, { 10, 9 }, { 11, 9 }, { -10, 10 }, { -9, 11 }, { -10, 9 }, { -11, 9 }, { 10, -10 }, { 9, -11 }, { 10, -9 }, { 11, -9 } };
    DenseLocalOnHeapMatrix pntMatrix = new DenseLocalOnHeapMatrix(points);
    FuzzyCMeansModel mdl = clusterer.cluster(pntMatrix, 4);
    Vector[] centers = mdl.centers();
    Arrays.sort(centers, Comparator.comparing(vector -> Math.atan2(vector.get(1), vector.get(0))));
    DistanceMeasure measure = mdl.distanceMeasure();
    assertEquals(0, measure.compute(centers[0], new DenseLocalOnHeapVector(new double[] { -10, -10 })), 1);
    assertEquals(0, measure.compute(centers[1], new DenseLocalOnHeapVector(new double[] { 10, -10 })), 1);
    assertEquals(0, measure.compute(centers[2], new DenseLocalOnHeapVector(new double[] { 10, 10 })), 1);
    assertEquals(0, measure.compute(centers[3], new DenseLocalOnHeapVector(new double[] { -10, 10 })), 1);
}
Also used : Arrays(java.util.Arrays) Assert.assertTrue(org.junit.Assert.assertTrue) DistanceMeasure(org.apache.ignite.ml.math.distances.DistanceMeasure) Test(org.junit.Test) ArrayList(java.util.ArrayList) Vector(org.apache.ignite.ml.math.Vector) MathIllegalArgumentException(org.apache.ignite.ml.math.exceptions.MathIllegalArgumentException) DenseLocalOnHeapMatrix(org.apache.ignite.ml.math.impls.matrix.DenseLocalOnHeapMatrix) EuclideanDistance(org.apache.ignite.ml.math.distances.EuclideanDistance) Comparator(java.util.Comparator) Collections(java.util.Collections) DenseLocalOnHeapVector(org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector) Assert.assertEquals(org.junit.Assert.assertEquals) EuclideanDistance(org.apache.ignite.ml.math.distances.EuclideanDistance) DenseLocalOnHeapVector(org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector) DenseLocalOnHeapMatrix(org.apache.ignite.ml.math.impls.matrix.DenseLocalOnHeapMatrix) Vector(org.apache.ignite.ml.math.Vector) DenseLocalOnHeapVector(org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector) DistanceMeasure(org.apache.ignite.ml.math.distances.DistanceMeasure) Test(org.junit.Test)

Example 15 with EuclideanDistance

use of org.apache.ignite.ml.math.distances.EuclideanDistance in project ignite by apache.

the class FuzzyCMeansLocalClustererTest method testIllegalNumberOfClusters.

/**
 * Test FCM on illegal number of clusters.
 */
@Test(expected = MathIllegalArgumentException.class)
public void testIllegalNumberOfClusters() {
    FuzzyCMeansLocalClusterer clusterer = new FuzzyCMeansLocalClusterer(new EuclideanDistance(), 2, BaseFuzzyCMeansClusterer.StopCondition.STABLE_CENTERS, 0.01, 10, null);
    double[][] points = new double[][] { { 1 }, { 2 }, { 3 }, { 4 } };
    clusterer.cluster(new DenseLocalOnHeapMatrix(points), 1);
}
Also used : EuclideanDistance(org.apache.ignite.ml.math.distances.EuclideanDistance) DenseLocalOnHeapMatrix(org.apache.ignite.ml.math.impls.matrix.DenseLocalOnHeapMatrix) Test(org.junit.Test)

Aggregations

EuclideanDistance (org.apache.ignite.ml.math.distances.EuclideanDistance)37 Vector (org.apache.ignite.ml.math.Vector)22 DenseLocalOnHeapVector (org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector)18 DenseLocalOnHeapMatrix (org.apache.ignite.ml.math.impls.matrix.DenseLocalOnHeapMatrix)14 LabeledDataset (org.apache.ignite.ml.structures.LabeledDataset)13 DistanceMeasure (org.apache.ignite.ml.math.distances.DistanceMeasure)10 Test (org.junit.Test)10 KNNModel (org.apache.ignite.ml.knn.models.KNNModel)9 SparseDistributedMatrix (org.apache.ignite.ml.math.impls.matrix.SparseDistributedMatrix)9 ArrayList (java.util.ArrayList)6 IgniteThread (org.apache.ignite.thread.IgniteThread)6 Arrays (java.util.Arrays)5 Comparator (java.util.Comparator)5 Collections (java.util.Collections)4 Ignite (org.apache.ignite.Ignite)4 FuzzyCMeansModel (org.apache.ignite.ml.clustering.FuzzyCMeansModel)4 KNNMultipleLinearRegression (org.apache.ignite.ml.knn.regression.KNNMultipleLinearRegression)4 MathIllegalArgumentException (org.apache.ignite.ml.math.exceptions.MathIllegalArgumentException)4 SparseBlockDistributedVector (org.apache.ignite.ml.math.impls.vector.SparseBlockDistributedVector)4 Assert.assertEquals (org.junit.Assert.assertEquals)4