在Java编程中,我们首先应该将weka.jar添加到我们的类路径中,因此我们可以通过以下代码的形式在WEKA中调用所有分类或聚类算法,
import weka.classifiers.trees.RandomForest;
...
RandomForest rf = new RandomForest(); // RandomForest object
但不幸的是,我们不能用这种方式导入LibSVM算法,因为weka.jar中没有这样的类。
所以,我的问题是如何将LibSVM导入我的Java代码?任何帮助将不胜感激:))
答案 0 :(得分:2)
首先,我想说有很多方法可以解决这个问题。我提到的解决方案非常简单,但StackOverflow的其他答案并没有详细描述,浪费了太多时间来验证。所以我很高兴与所有WEKA初学者分享:)
a)从Maven资源库中心下载LibSVM.jar。请注意,此LibSVM.jar
与Chih-Chung Chang and Chih-Jen Lin;
libsvm.jar
不同
b)将LibSVM.jar
添加到Java项目的类路径中;
c)在需要时调用分类器LibSVM,请参阅以下Java代码。
import weka.classifiers.functions.LibSVM; // contained in LibSVM.jar
String path = "file/train.arff";
Instances train = DataSource.read(path); // load the dataset
train.setClassIndex(train.numAttribute()-1); // set class index
LibSVM svm = new LibSVM(); // load the svm classifier
svm.buildClassifier(train);
Evaluation eval = new Evaluation(train);
eval.crossValidateModel(svm, train, 10, new Random(1)); // 10-fold cross-validation
答案 1 :(得分:0)
请参阅:https://weka.wikispaces.com/LibSVM
使用Weka的软件包管理器安装LibSVM。假设“weka.jar”在你当前的文件夹中,而不是运行它:
<!DOCTYPE html>
<meta charset="utf-8">
<head>
<script src="jsnetworkx.js"></script>
<script src="https://d3js.org/d3.v4.js"></script>
</head>
<body>
<script>
var G = new jsnx.Graph();
G.addWeightedEdgesFrom([[2,3,10]]);
G.addStar([3,4,5,6], {weight: 5});
G.addStar([2,1,0,-1], {weight: 3});
jsnx.draw(G, {
element: '#canvas',
weighted: true,
edgeStyle: {
'stroke-width': 10
}
});
</script>
</body>
</html>
在安装过程中,它会显示:
java -cp weka.jar weka.core.WekaPackageManager -install-package LibSVM
您可以看到某处安装了“LibSVM.jar”。就我而言,它位于:
[DefaultPackageManager] Tmp file: /tmp/LibSVM1.0.107382715397815864641.zip
[DefaultPackageManager] Installing: Description.props
[DefaultPackageManager] Installing: LibSVM.jar
[DefaultPackageManager] Installing: build_package.xml
...