【问题标题】:Using weka from a batch file从批处理文件中使用 weka
【发布时间】:2018-05-03 15:22:39
【问题描述】:

我想在不打开 Weka Explorer 或简单 CLI 界面的情况下从 Weka 保存的模型中进行预测。所以我创建了一个批处理文件:

@ECHO ON

title Weka caller

set root=C:\Program Files\Weka-3-8\

cd /D %root%

java -classpath weka.jar weka.classifiers.functions.LinearRegression -T Z:\ARFF_FILES\TestSet_regression.arff -l Z:\WEKA_MODELS\Regression_model_03_05_2018.model -p 0

我有这个错误信息:

C:\Program Files\Weka-3-8>java -classpath weka.jar weka.classifiers.functions.LinearRegression -T Z:\ARFF_FILES\TestSet_regression.arff -l Z:\WEKA_MODELS\Regression_model_03_05_2018.model -p 0
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: no/uib/cipr/matrix/Matrix
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.privateGetMethodRecursive(Unknown Source)
    at java.lang.Class.getMethod0(Unknown Source)
    at java.lang.Class.getMethod(Unknown Source)
    at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: no.uib.cipr.matrix.Matrix
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 7 more

有人已经从 windows cmd shell 调用了 weka 吗??

【问题讨论】:

    标签: windows batch-file command-line weka


    【解决方案1】:

    我没有在 windows shell 中使用过 Weka,但是你可以在 Linux 中使用的方法如下:

    #!/bin/bash
    export CLASSPATH=/home/stalai/Weka/weka-3-9-1/weka.jar:.
    echo $CLASSPATH
    # Code that loops through various classification routines and saves the results in a corresponding text file
    # Defult values
    CV=103      # Cross Validation: change to 10 or keep leave one out cross validation [change by (-x)]
    files=dataset.csv   # Look at the required .csv files and process them 
    for i in {100..10};
     do
       java weka.classifiers.meta.AttributeSelectedClassifier -t $files -x $CV >> $CorAttEvalResults -E "weka.attributeSelection.CorrelationAttributeEval " -S "weka.attributeSelection.Ranker -T -1.7976931348623157E308 -N $i" -W weka.classifiers.lazy.IBk -- -K 1 -W 0 -A "weka.core.neighboursearch.LinearNNSearch -A \"weka.core.EuclideanDistance -R first-last\""
    done
    

    在此示例中,我们使用基于相关性的特征排名器将前 100 个特征减少到 10 个,并在留一法交叉验证后将结果保存在 CorAttEvalResults 中。 CV=103 实际上是 dataset.csv 文件中的类总数。

    确定所需模型后,更改相应的标志值并重新加载模型。如果您需要更多帮助,请告诉我!

    另外我建议使用 CSV 而不是 Arff,因为如果您想扩展代码或类似的东西,它更容易处理跨平台。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-18
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 2021-12-19
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多