UnsupportedOperationException при использовании DBSCAN с RStarTree в ELKI - PullRequest
0 голосов
/ 29 декабря 2018

Я использую ELKI для кластеризации, и я пробовал это более 1k раз на многих наборах данных, и это было прекрасно: D, но когда я запускаю его на одном из моих файлов (это был большой файл), я вижу ошибку при инициализации дерева,в чем проблема?как это исправить?

вся команда и результат здесь:

java -jar elki-bundle-0.7.1.jar KDDCLIApplication -verbose -verbose -enableDebug true -dbc.in my_input -parser.labelIndices 0 -db.index tree.spatial.rstarvariants.rstar.RStarTreeFactory -time -algorithm clustering.DBSCAN -algorithm.distancefunction geo.LngLatDistanceFunction -geo.model SphericalHaversineEarthModel -dbscan.epsilon 50.0 -dbscan.minpts 446 -resulthandler ResultWriter,ExportVisualizations -out my_output -vis.output my_visOutput 

de.lmu.ifi.dbs.elki.datasource.FileBasedDatabaseConnection.load: 5716 мсde.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.rstar.RStarTreeIndex.directory.capacity: 95 de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.rstar.RStarTreeIndex.directory.minfill: 38 de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.rstar.RStarTreeIndex.leaf.capacity: 153 de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.rstar.RStarTreeIndex.leaf.minfill: 61 Узел не является узлом каталога!java.lang.UnsupportedOperationException: узел не является узлом каталога!на de.lmu.ifi.dbs.elki.index.tree.AbstractNode.addDirectoryEntry (AbstractNode.java:240) на de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.AbstractRStarTree.insertDirectoryEntry (AbstractRS).Java: 194) в de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.AbstractRStarTree.reInsert (AbstractRStarTree.java:655) в de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.strategies.overflow.LimitedReinsertOverflowTreatment.handleOverflow (LimitedReinsertOverflowTreatment.java:97) в de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.ifi.dbs.elki.index.tree.spatial.rstarvariants.AbstractRStarTree.adjustTree (AbstractRStarTree.java:676) в de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.AbstractRStarTree.adjustTreej (Аннотация): 705) на de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.AbstractRStarTree.insertLeafEntry (AbstractRStarTree.java:175) на de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.AbstractRStarTree.reInsert (AbstractRStarTree.java:649) в de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.strategies.overflow.LimitedReinsertOverflowTreatment.handleOverflow (LimitedReinsertOverflowTreatment.jav).ifi.dbs.elki.index.tree.spatial.rstarvariants.AbstractRStarTree.overflowTreatment (AbstractRStarTree.java:571) в de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.AbstractRStarTree.adjustTreejreeTree (Аннотация: 676) на de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.AbstractRStarTree.insertLeafEntry (AbstractRStarTree.java:175) на de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.AbstractRStarTree.insertLeaf (AbstractRStarTree.java:151) в de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.rstar.RStarTreeIndex.insert (RStarTreeIndex.java:104) в de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.rstar.RStarTreeIndex.insertAll (RStarTreeIndex.java:129) в de.lmu.ifi.dbs.elki.index.tree.spatial.rstarvariants.rstar.RStarTreeIndex.initialize (RStarTreeIndex.java:94) в de.lmu.ifi.dbs.elki.database.StaticArrayDatabase.initialize (StaticArrayDatabase.java:168) в de.lmu.ifi.dbs.elki.workflow.InputStep.getDatabase (InputStep.Java: 63) на de.lmu.ifi.dbs.elki.KDDTask.run (KDDTask.java:108) на de.lmu.ifi.dbs.elki.application.KDDCLIApplication.run (KDDCLIApplication.java:61) на de.lmu.ifi.dbs.elki.application.AbstractApplication.runCLIApplication (AbstractApplication.java:194) в de.lmu.ifi.dbs.elki.application.KDDCLIApplication.main (KDDCLIApplication.java:96) в sun.reflect.NativeMethodAccess.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.javajlan.ho.j.: 498) at de.lmu.ifi.dbs.elki.application.ELKILauncher.main (ELKILauncher.java:60)

1 Ответ

0 голосов
/ 29 декабря 2018

Без данных, к сожалению, их трудно воспроизвести.

Очевидно, что существует некоторая несогласованность в дереве, где дерево больше не правильно сбалансировано.Это потребует некоторых усилий для отладки, поэтому было бы очень хорошо, если бы вы могли найти эту ошибку .При быстром взгляде на трассировку стека кажется, что повторная вставка вызвала вторую повторную вставку (IIRC, R * -деревья допускают несколько повторных вставок одновременно, но только на разных уровнях; это действительно может быть другой уровень).Но вставки действительно сложно сделать правильно.На самом деле, у меня где-то есть более быстрая и более чистая реализация R-деревьев для ELKI, но мне никогда не удавалось сделать чистую повторную вставку;поэтому они не имеют всей текущей функциональности (и именно поэтому переписывание никогда не было объединено в ELKI).

Как простой обходной путь (и это рекомендуется в любом случае),вместо этого загрузите ваше дерево с помощью -spatial.bulkstrategy SortTileRecursiveBulkSplit.Тогда этот путь к коду никогда не будет использоваться (плюс, дерево в любом случае будет лучше, это будет значительно быстрее , так как "глобальная" массовая загрузка создает неперекрывающиеся листовые страницы и деревья с низким перекрытием соптимальная заливка).

Рекомендуется в документации по индексированию из-за лучшей производительности.

...