2016-01-21 49 views
0

我有一個由大約10000個具有兩個特徵的樣本組成的數據集。我想用ELKI來運行LSDBC算法並對我的數據集進行聚類。但是,我一直無法讓ELKI工作。在運行elki-0.7.0.jar並將所需的設置輸入到gui中後,無論我選擇什麼設置,我都會在gui底部的控制檯輸入中獲得一長串錯誤消息(我還沒有能力輸入所有我想要的設置)。這對我來說,表明我錯過了一些依賴關係,錯過了一些安裝步驟,或者某種程度上沒有正確使用該軟件。ELKI找不到類gnu/trove/impl/hash/TObjectHash

不幸的是,似乎沒有很多關於ELKI的文檔,但它也是LSDBC的唯一實現之一,我已經能夠找到。我正在尋找的是一步一步的ELI5,在我的數據集(它位於WEKA創建的arff文件中)上安裝並運行此算法並將結果輸出爲csv文件的說明;即指示每個樣本的聚類分配的輸出文件。我還希望能夠對最優的k和alpha值進行網格搜索(即,運行k和alpha的幾個值的算法並保存每個結果;之後我將確定最優值)。我正在使用Mac OS X Yosemite。

我覺得這應該是一個相對直接的任務,但我還沒有取得任何進展。我已經複製了我一直得到的錯誤流

gnu/trove/impl/hash/TObjectHash 
java.lang.NoClassDefFoundError: gnu/trove/impl/hash/TObjectHash 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at de.lmu.ifi.dbs.elki.datasource.parser.NumberVectorLabelParser.<init>(NumberVectorLabelParser.java:127) 
    at de.lmu.ifi.dbs.elki.datasource.parser.NumberVectorLabelParser$Parameterizer.makeInstance(NumberVectorLabelParser.java:419) 
    at de.lmu.ifi.dbs.elki.datasource.parser.NumberVectorLabelParser$Parameterizer.makeInstance(NumberVectorLabelParser.java:355) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer.make(AbstractParameterizer.java:120) 
    at de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil.tryInstantiate(ClassGenericsUtil.java:252) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ClassParameter.instantiateClass(ClassParameter.java:234) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter.instantiateClass(ObjectParameter.java:152) 
    at de.lmu.ifi.dbs.elki.datasource.AbstractDatabaseConnection$Parameterizer.configParser(AbstractDatabaseConnection.java:184) 
    at de.lmu.ifi.dbs.elki.datasource.InputStreamDatabaseConnection$Parameterizer.makeOptions(InputStreamDatabaseConnection.java:136) 
    at de.lmu.ifi.dbs.elki.datasource.FileBasedDatabaseConnection$Parameterizer.makeOptions(FileBasedDatabaseConnection.java:123) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer.make(AbstractParameterizer.java:116) 
    at de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil.tryInstantiate(ClassGenericsUtil.java:252) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ClassParameter.instantiateClass(ClassParameter.java:234) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter.instantiateClass(ObjectParameter.java:152) 
    at de.lmu.ifi.dbs.elki.database.StaticArrayDatabase$Parameterizer.makeOptions(StaticArrayDatabase.java:210) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer.make(AbstractParameterizer.java:116) 
    at de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil.tryInstantiate(ClassGenericsUtil.java:252) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ClassParameter.instantiateClass(ClassParameter.java:234) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter.instantiateClass(ObjectParameter.java:152) 
    at de.lmu.ifi.dbs.elki.workflow.InputStep$Parameterizer.makeOptions(InputStep.java:94) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer.make(AbstractParameterizer.java:116) 
    at de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil.tryInstantiate(ClassGenericsUtil.java:252) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.TrackParameters.tryInstantiate(TrackParameters.java:213) 
    at de.lmu.ifi.dbs.elki.KDDTask$Parameterizer.makeOptions(KDDTask.java:156) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer.make(AbstractParameterizer.java:116) 
    at de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil.tryInstantiate(ClassGenericsUtil.java:252) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.TrackParameters.tryInstantiate(TrackParameters.java:213) 
    at de.lmu.ifi.dbs.elki.application.KDDCLIApplication$Parameterizer.makeOptions(KDDCLIApplication.java:79) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer.make(AbstractParameterizer.java:116) 
    at de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil.tryInstantiate(ClassGenericsUtil.java:252) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.TrackParameters.tryInstantiate(TrackParameters.java:213) 
    at de.lmu.ifi.dbs.elki.gui.minigui.MiniGUI.doSetParameters(MiniGUI.java:372) 
    at de.lmu.ifi.dbs.elki.gui.minigui.MiniGUI.updateParameterTable(MiniGUI.java:359) 
    at de.lmu.ifi.dbs.elki.gui.minigui.MiniGUI$5.tableChanged(MiniGUI.java:277) 
    at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:296) 
    at javax.swing.table.AbstractTableModel.fireTableCellUpdated(AbstractTableModel.java:275) 
    at de.lmu.ifi.dbs.elki.gui.util.ParametersModel.setValueAt(ParametersModel.java:130) 
    at javax.swing.JTable.setValueAt(JTable.java:2741) 
    at javax.swing.JTable.editingStopped(JTable.java:4723) 
    at javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:141) 
    at javax.swing.AbstractCellEditor.stopCellEditing(AbstractCellEditor.java:85) 
    at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1010) 
    at javax.swing.plaf.basic.BasicTableUI$MouseInputHandler.mousePressed(BasicTableUI.java:798) 
    at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280) 
    at java.awt.Component.processMouseEvent(Component.java:6532) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
    at java.awt.Component.processEvent(Component.java:6300) 
    at java.awt.Container.processEvent(Container.java:2236) 
    at java.awt.Component.dispatchEventImpl(Component.java:4891) 
    at java.awt.Container.dispatchEventImpl(Container.java:2294) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4522) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 
    at java.awt.Container.dispatchEventImpl(Container.java:2280) 
    at java.awt.Window.dispatchEventImpl(Window.java:2750) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at [...] 
Caused by: java.lang.ClassNotFoundException: gnu.trove.impl.hash.TObjectHash 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at de.lmu.ifi.dbs.elki.datasource.parser.NumberVectorLabelParser.<init>(NumberVectorLabelParser.java:127) 
    at de.lmu.ifi.dbs.elki.datasource.parser.NumberVectorLabelParser$Parameterizer.makeInstance(NumberVectorLabelParser.java:419) 
    at de.lmu.ifi.dbs.elki.datasource.parser.NumberVectorLabelParser$Parameterizer.makeInstance(NumberVectorLabelParser.java:355) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer.make(AbstractParameterizer.java:120) 
    at de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil.tryInstantiate(ClassGenericsUtil.java:252) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ClassParameter.instantiateClass(ClassParameter.java:234) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter.instantiateClass(ObjectParameter.java:152) 
    at de.lmu.ifi.dbs.elki.datasource.AbstractDatabaseConnection$Parameterizer.configParser(AbstractDatabaseConnection.java:184) 
    at de.lmu.ifi.dbs.elki.datasource.InputStreamDatabaseConnection$Parameterizer.makeOptions(InputStreamDatabaseConnection.java:136) 
    at de.lmu.ifi.dbs.elki.datasource.FileBasedDatabaseConnection$Parameterizer.makeOptions(FileBasedDatabaseConnection.java:123) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer.make(AbstractParameterizer.java:116) 
    at de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil.tryInstantiate(ClassGenericsUtil.java:252) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ClassParameter.instantiateClass(ClassParameter.java:234) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter.instantiateClass(ObjectParameter.java:152) 
    at de.lmu.ifi.dbs.elki.database.StaticArrayDatabase$Parameterizer.makeOptions(StaticArrayDatabase.java:210) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer.make(AbstractParameterizer.java:116) 
    at de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil.tryInstantiate(ClassGenericsUtil.java:252) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ClassParameter.instantiateClass(ClassParameter.java:234) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter.instantiateClass(ObjectParameter.java:152) 
    at de.lmu.ifi.dbs.elki.workflow.InputStep$Parameterizer.makeOptions(InputStep.java:94) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer.make(AbstractParameterizer.java:116) 
    at de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil.tryInstantiate(ClassGenericsUtil.java:252) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.TrackParameters.tryInstantiate(TrackParameters.java:213) 
    at de.lmu.ifi.dbs.elki.KDDTask$Parameterizer.makeOptions(KDDTask.java:156) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer.make(AbstractParameterizer.java:116) 
    at de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil.tryInstantiate(ClassGenericsUtil.java:252) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.TrackParameters.tryInstantiate(TrackParameters.java:213) 
    at de.lmu.ifi.dbs.elki.application.KDDCLIApplication$Parameterizer.makeOptions(KDDCLIApplication.java:79) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.AbstractParameterizer.make(AbstractParameterizer.java:116) 
    at de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil.tryInstantiate(ClassGenericsUtil.java:252) 
    at de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.TrackParameters.tryInstantiate(TrackParameters.java:213) 
    at de.lmu.ifi.dbs.elki.gui.minigui.MiniGUI.doSetParameters(MiniGUI.java:372) 
    at de.lmu.ifi.dbs.elki.gui.minigui.MiniGUI.updateParameterTable(MiniGUI.java:359) 
    at de.lmu.ifi.dbs.elki.gui.minigui.MiniGUI$5.tableChanged(MiniGUI.java:277) 
    at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:296) 
    at javax.swing.table.AbstractTableModel.fireTableCellUpdated(AbstractTableModel.java:275) 
    at de.lmu.ifi.dbs.elki.gui.util.ParametersModel.setValueAt(ParametersModel.java:130) 
    at javax.swing.JTable.setValueAt(JTable.java:2741) 
    at javax.swing.JTable.editingStopped(JTable.java:4723) 
    at javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:141) 
    at javax.swing.AbstractCellEditor.stopCellEditing(AbstractCellEditor.java:85) 
    at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1010) 
    at javax.swing.plaf.basic.BasicTableUI$MouseInputHandler.mousePressed(BasicTableUI.java:798) 
    at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280) 
    at java.awt.Component.processMouseEvent(Component.java:6532) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
    at java.awt.Component.processEvent(Component.java:6300) 
    at java.awt.Container.processEvent(Container.java:2236) 
    at java.awt.Component.dispatchEventImpl(Component.java:4891) 
    at java.awt.Container.dispatchEventImpl(Container.java:2294) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4522) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 
    at java.awt.Container.dispatchEventImpl(Container.java:2280) 
    at java.awt.Window.dispatchEventImpl(Window.java:2750) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at [...] 

回答

0

其實在JavaDoc和Wiki中有很多文檔。

您的錯誤是非常基本的Java用法,並沒有真正與ELKI相關。

正如你可以從類的名稱告訴(或谷歌)沒有找到

gnu/trove/impl/hash/TObjectHash 
java.lang.NoClassDefFoundError: gnu/trove/impl/hash/TObjectHash 

你缺少的GNU特羅韋 Java庫(ELKI的依賴,而不是部分ELKI的)。也許你沒有下載完整(單罐)版本,但只有最小的下載(假定你單獨管理依賴或已經擁有它們,例如使用流行的Maven工具)。

0

新ELKI 0.7.1版本

  • 包括自述告訴你使用elki.batelki.sh推出。
  • 將顯示一個更容易理解的警告,告訴您您的類路徑不完整。

儘管如此,ELKI的觀衆是開發人員知道如何閱讀堆棧跟蹤。