如何通过命令行执行WekaPackageManager加载的分类器

时间:2019-08-19 21:56:43

标签: weka

我正在 Ubuntu服务器无GUI )中使用 Weka 3.8.3 。我已经使用WekaPackageManager安装了LibLINEAR库,但是无法使用命令行运行它。

作为旁注。 Weka没有安装Package Manager。它在/vendor目录中。

使用默认分类器,WEKA运行良好。这是一个有关如何从命令行调用它们的示例。

java -cp ./vendor/weka-3-8-3/weka.jar weka.classifiers.trees.J48 ...

我需要安装外部软件包,例如LibLINEAR时出现问题。根据{{​​3}}中的建议,我已经使用Weka软件包管理器安装了它们。

java -cp weka.jar weka.core.WekaPackageManager -install-package LibLINEAR

我认为它们已正确安装。

# Output: java -cp weka.jar weka.core.WekaPackageManager -list-packages installed
Installed       Repository      Loaded  Package
=========       ==========      ======  =======
1.0.10          1.0.10          Yes     LibSVM: A wrapper class for the libsvm tools
1.9.8           1.9.8           Yes     LibLINEAR: A wrapper class for the liblinear classifier

注意:无论如何,我无法在系统上找到任何具有这些名称的新.JAR文件,因此我无法弄清楚WekaPackageManager的工作原理。

接下来,根据文档:

  

1.4.2运行已安装的学习算法。

     

但是使用软件包管理器安装的软件包中的算法又如何呢?我们不需要每次运行特定算法时都向我们的类路径中添加大量的jar文件。幸运的是,我们不必这样做。 Weka具有一种在运行时动态加载已安装软件包的机制。我们可以使用“运行”命令来运行命名算法。

我知道我必须使用Weka.Run来执行新安装的软件包,但是我无法使其工作。

这是我尝试过的事情的清单。

尝试1.使用weka.Run

当我以这种方式运行分类器时:

java -cp ./vendor/weka-3-8-3/weka.jar weka.Run weka.classifiers.functions.LibLINEAR ...

我收到以下消息:

Can't find scheme weka.classifiers.functions.LibLINEAR, or it is not runnable.

尝试2。无需weka.Run

由于-list-packages installed输出的是软件包已加载,我试图在没有Weka.Run语句的情况下运行WEKA,但是我得到了

Error: Could not find or load main class weka.classifiers.functions.LibLINEAR

尝试3.加载类路径

最后,如此处的建议: official documentation

我已经下载了LibLinear库,并以此方式添加到类路径中。

java -cp ./vendor/weka-3-8-3/weka.jar:./vendor/weka-3-8-3/liblinear-2.20.jar weka.classifiers.functions.LibLINEAR ...

但是错误与第一次尝试相同。

Error: Could not find or load main class weka.classifiers.functions.LibLINEAR

任何建议将不胜感激

(P。S:对不起,我的英语)

更新

我想我已经找到问题了。该命令可以直接从命令行正常运行

java -cp "./vendor/weka-3-8-3/weka.jar:./vendor/weka-3-8-3/liblinear-2.20.jar"  weka.Run weka.classifiers.functions.LibLINEAR -S 1 -C 1.0 -E 0.001 -B 1.0 -L 0.1 -I 1000  -t "temp/diabetes/models/bag-of-words/range-1/ngram-1-1-50.arff" -v -o

但不能在PHP中使用exec在脚本中。我认为该软件包安装在www-data用户无法访问的目录中。

可能的解决方案

我已经将wekafiles目录从我的主目录复制到vendor目录中,并且我已经通过以下方式启动了Java:

java -DWEKA_HOME=./vendor/weka-3-8-3/wekafiles -cp ./vendor/weka-3-8-3/weka.jar  weka.Run weka.classifiers.functions.LibLINEAR -S 1 -C 1.0 -E 0.001 -B 1.0 -L 0.1 -I 1000  -t ...

此解决方案对我有用,但我认为还有更好的选择。

0 个答案:

没有答案