windows - 从批处理文件中使用 weka
问题描述
我想在不打开 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 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,因为如果您想扩展代码或类似的东西,它更容易处理跨平台。
推荐阅读
- python - Tkinter 滚动条问题(索引到自定义范围的独立可滚动长度)
- mysql - 使用 Cloud SQL 客户端将数据导入 Cloud SQL 连接已结束
- python - 尝试从命令行启动 appium 服务器但不断收到此错误
- c# - 将批量数据插入一对多关系的表中
- c - 尝试调试程序
- scheduled-tasks - 查看所有任务 - 意外的“SHOW”
- pytorch - 通过 PyTorch 和转换器库使用 LSTM 微调 BERT。指标随着超参数的变化保持不变
- reactjs - 如何在 React 中保护刷新令牌?
- openshift - 在 OpenShift Online 上部署 Windows 虚拟机(入门计划)
- c++ - 将 C++ 字符串转换为 char 数组,同时将其编码为 UCS2(或 utf-8)