Я пытаюсь скопировать данные изображения (хранятся в 100 отдельных файлах csv) с алгоритмом ELMI XMeans. Он хорошо работает для первых двух файлов, но тогда алгоритм зависает навсегда при обработке третьего файла. Похоже, проблема возникает в каждом третьем файле или так, потому что, когда я запускаю цикл, который просматривает все файлы в четвертом файле, он работает для четвертого и пятого файлов, но не для шестого файла. То же самое касается 9-го и 11-го файлов ... но, возможно, это совпадение.XMeans ELKI терпит неудачу при каждом третьем входном файле
Мой XMeans вызов выглядит следующим образом:
DatabaseConnection dbc = new ArrayAdapterDatabaseConnection(data);
Database db = new StaticArrayDatabase(dbc, null);
db.initialize();
Relation<NumberVector> rel = db.getRelation(TypeUtil.NUMBER_VECTOR_FIELD);
DBIDRange ids = (DBIDRange) rel.getDBIDs();
SquaredEuclideanDistanceFunction dist = SquaredEuclideanDistanceFunction.STATIC;
RandomlyGeneratedInitialMeans init = new RandomlyGeneratedInitialMeans(RandomFactory.DEFAULT);
KMeansInitialization initializer = new FirstKInitialMeans();
PredefinedInitialMeans splitInitializer = new PredefinedInitialMeans(data);
KMeansQualityMeasure informationCriterion = new WithinClusterMeanDistanceQualityMeasure();
RandomFactory random = new RandomFactory(123);
KMeans<NumberVector, KMeansModel> innerKMeans = new KMeansHamerly<>(dist, 50, 1, init, true);
XMeans<NumberVector, KMeansModel> xm = new XMeans<>(dist, 5, 50, 1, innerKMeans, initializer, splitInitializer, informationCriterion, random);
Clustering<KMeansModel> c = xm.run(db, rel);
Я не слишком уверен, что эти четыре линии, так что, возможно, именно поэтому она работает для некоторых файлов и для других это не делает:
KMeansInitialization initializer = new FirstKInitialMeans();
PredefinedInitialMeans splitInitializer = new PredefinedInitialMeans(data);
KMeansQualityMeasure informationCriterion = new WithinClusterMeanDistanceQualityMeasure();
RandomFactory random = new RandomFactory(123);
данные - это всего лишь двойной [] [], который содержит данные из входных файлов.
Любая помощь будет очень признательна!
Насколько велики файлы? * что такое трассировка стека *? Одна действительно приятная вещь о Java - это возможность видеть, где сейчас находятся потоки. –
Размер файла всегда 60 КБ. – Charlie28000