IgniteCache<Integer, Vector> dataCache = new SandboxMLCache(ignite)
.fillCacheWith(MLSandboxDatasets.TWO_CLASSED_IRIS);
- KMeansTrainer trainer = new KMeansTrainer()
- .withSeed(7867L);
+ KMeansTrainer trainer = new KMeansTrainer();
KMeansModel mdl = trainer.fit(
ignite,
.withDistance(new ManhattanDistance())
.withK(50)
.withMaxIterations(1000)
- .withSeed(1234L)
.withEpsilon(1e-2);
long startTrainingTime = System.currentTimeMillis();
/** Distance measure. */
private DistanceMeasure distance = new EuclideanDistance();
- /** KMeans initializer. */
- private long seed;
-
/**
* Trains model based on the specified data.
*
if (data.rowSize() != 0) {
if (data.rowSize() > k) { // If it's enough rows in partition to pick k vectors.
- final Random random = new Random(seed);
+ final Random random = environment.randomNumbersGenerator();
for (int i = 0; i < k; i++) {
Set<Integer> uniqueIndices = new HashSet<>();
// Pick k vectors randomly.
if (rndPnts.size() >= k) {
for (int i = 0; i < k; i++) {
- final LabeledVector rndPnt = rndPnts.get(new Random(seed).nextInt(rndPnts.size()));
+ final LabeledVector rndPnt = rndPnts.get(environment.randomNumbersGenerator().nextInt(rndPnts.size()));
rndPnts.remove(rndPnt);
initCenters[i] = rndPnt.features();
}
this.distance = distance;
return this;
}
-
- /**
- * Gets the seed number.
- *
- * @return The parameter value.
- */
- public long getSeed() {
- return seed;
- }
-
- /**
- * Set up the seed.
- *
- * @param seed The parameter value.
- * @return Model with new seed parameter value.
- */
- public KMeansTrainer withSeed(long seed) {
- this.seed = seed;
- return this;
- }
}
/** Distance measure. */
private DistanceMeasure distance = new EuclideanDistance();
- /** KMeans initializer. */
- private long seed;
-
/**
* Trains model based on the specified data.
*
KMeansTrainer trainer = new KMeansTrainer()
.withAmountOfClusters(k)
.withMaxIterations(maxIterations)
- .withSeed(seed)
.withDistance(distance)
.withEpsilon(epsilon);
return this;
}
- /**
- * Gets the seed number.
- *
- * @return The parameter value.
- */
- public long getSeed() {
- return seed;
- }
-
- /**
- * Set up the seed.
- *
- * @param seed The parameter value.
- * @return Model with new seed parameter value.
- */
- public ANNClassificationTrainer withSeed(long seed) {
- this.seed = seed;
- return this;
- }
-
/** Service class used for statistics. */
public static class CentroidStat implements Serializable {
/** Serial version uid. */
* @param lbExtractor Label extractor.
* @return Model.
*/
- public <K, V> KNNRegressionModel fit(DatasetBuilder<K, V> datasetBuilder,
+ @Override public <K, V> KNNRegressionModel fit(DatasetBuilder<K, V> datasetBuilder,
IgniteBiFunction<K, V, Vector> featureExtractor, IgniteBiFunction<K, V, Double> lbExtractor) {
return updateModel(null, datasetBuilder, featureExtractor, lbExtractor);
}
/** {@inheritDoc} */
- public <K, V> MultilayerPerceptron fit(DatasetBuilder<K, V> datasetBuilder,
+ @Override public <K, V> MultilayerPerceptron fit(DatasetBuilder<K, V> datasetBuilder,
IgniteBiFunction<K, V, Vector> featureExtractor, IgniteBiFunction<K, V, double[]> lbExtractor) {
return updateModel(null, datasetBuilder, featureExtractor, lbExtractor);
.withDistance(new EuclideanDistance())
.withAmountOfClusters(10)
.withMaxIterations(1)
- .withEpsilon(PRECISION)
- .withSeed(2);
+ .withEpsilon(PRECISION);
assertEquals(10, trainer.getAmountOfClusters());
- assertEquals(2, trainer.getSeed());
assertTrue(trainer.getDistance() instanceof EuclideanDistance);
return trainer;
}
IgniteBiFunction<Integer, BinaryObject, Double> lbExtractor = (k, v) -> (double) v.field("label");
- KMeansTrainer trainer = new KMeansTrainer().withSeed(123L);
+ KMeansTrainer trainer = new KMeansTrainer();
CacheBasedDatasetBuilder<Integer, BinaryObject> datasetBuilder =
new CacheBasedDatasetBuilder<>(ignite, dataCache).withKeepBinary(true);
.withK(10)
.withMaxIterations(10)
.withEpsilon(1e-4)
- .withDistance(new EuclideanDistance())
- .withSeed(1234L);
+ .withDistance(new EuclideanDistance());
Assert.assertEquals(10, trainer.getK());
Assert.assertEquals(10, trainer.getMaxIterations());
TestUtils.assertEquals(1e-4, trainer.getEpsilon(), PRECISION);
Assert.assertEquals(new EuclideanDistance(), trainer.getDistance());
- Assert.assertEquals(1234L, trainer.getSeed());
NNClassificationModel mdl = trainer.fit(
cacheMock,
.withEpsilon(1e-4)
.withDistance(new EuclideanDistance());
- ANNClassificationModel originalMdl = (ANNClassificationModel) trainer.withSeed(1234L).fit(
+ ANNClassificationModel originalMdl = (ANNClassificationModel) trainer.fit(
cacheMock,
parts,
(k, v) -> VectorUtils.of(Arrays.copyOfRange(v, 1, v.length)),
.withDistanceMeasure(new EuclideanDistance())
.withStrategy(NNStrategy.SIMPLE);
- ANNClassificationModel updatedOnSameDataset = (ANNClassificationModel) trainer.withSeed(1234L).update(originalMdl,
+ ANNClassificationModel updatedOnSameDataset = (ANNClassificationModel) trainer.update(originalMdl,
cacheMock, parts,
(k, v) -> VectorUtils.of(Arrays.copyOfRange(v, 0, v.length - 1)),
(k, v) -> v[2]
.withDistanceMeasure(new EuclideanDistance())
.withStrategy(NNStrategy.SIMPLE);
- ANNClassificationModel updatedOnEmptyDataset = (ANNClassificationModel) trainer.withSeed(1234L).update(originalMdl,
+ ANNClassificationModel updatedOnEmptyDataset = (ANNClassificationModel) trainer.update(originalMdl,
new HashMap<Integer, double[]>(), parts,
(k, v) -> VectorUtils.of(Arrays.copyOfRange(v, 0, v.length - 1)),
(k, v) -> v[2]