2017-07-07 37 views
0

在Java編程中,我們首先應該添加weka.jar到我們的類路徑,因此,我們可以調用所有在下列代碼的形式進行分類或羣集算法WEKA,如何導入LIBSVM到我的Java代碼

import weka.classifiers.trees.RandomForest; 
... 
RandomForest rf = new RandomForest(); // RandomForest object 

但不幸的是,我們不能用這種方式導入LibSVM算法,因爲weka.jar中沒有這樣的類。

所以,我的問題是如何將LibSVM導入到我的Java代碼?任何幫助將不勝感激:)

+0

LibSVM是它的唯一庫,因此您需要將libsvm.jar添加到您的項目庫。 – Steve

+0

查看https://stackoverflow.com/questions/5223982/how-to-use-libsvm-with-weka-in-my-java-code可能有幫助。 – tale852150

+0

非常感謝,但這兩種方法不適合我。 a)'WekaPackageManager'將拋出ClassNotFoundException異常; b)鏈接到'wlsvm.jar'是錯誤的,我也無法在'libsvm.jar'和'weka.jar'中找到類LibSVM。所以我懷疑這些方法是否真的由作者檢查:( – Yongfeng

回答

0

首先,我想說有很多方法來解決這個問題。我提到的解決方案非常簡單,但StackOverflow的其他答案沒有詳細描述,浪費了太多時間來驗證。所以我很樂意與所有的WEKA初學者分享:)

a)從Maven Repository Center下載LibSVM.jar。請注意,這個LibSVM.jar不同於開發的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 
0

參見:https://weka.wikispaces.com/LibSVM

使用Weka中的軟件包管理器安裝LIBSVM。假設「weka.jar」是在當前文件夾,比運行此:

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

在安裝過程中,它表明:

[DefaultPackageManager] Tmp file: /tmp/LibSVM1.0.107382715397815864641.zip 
[DefaultPackageManager] Installing: Description.props 
[DefaultPackageManager] Installing: LibSVM.jar 
[DefaultPackageManager] Installing: build_package.xml 
... 

你可以看到「LibSVM.jar」在某處安裝。在我的情況下,它在:

/home/john/wekafiles/packages/LibSVM/LibSVM.jar