アプリケーションで Weka と共に LibSVM 分類器を使用したいと考えています。どうすれば(またはどこで良い例を見つけることができますか)これを行うことができますか?
5 に答える
確かに少し遅くなりましたが、とにかく答えます。プロジェクトでは、weka.jar、libsvm.jar、および wlsvm.jar (libsvm ラッパー) を使用する必要があります。したがって、ビルドパスまたはクラスパスなどに3つのjarをすべて含めるだけです。
ここから wlsvm.jar を取得できます: http://ailab.ist.psu.edu/yasser/wlsvm.html
ここから weka を入手できます: http://www.cs.waikato.ac.nz/ml/weka/
また、ここから libsvm を取得できます: http://www.csie.ntu.edu.tw/~cjlin/libsvm/
これを weka 3.7.7 または 3.7.8 で動作させることはできませんでしたが、3.6.8 (今日の最新の安定バージョン) で動作させることができました。
また、svnlib から .class ファイルを取得し、それらをプロジェクトへのビルド パスに含める必要があったためです。.class ファイルをビルドするには、SVNLib/java の make ファイルを使用します。
開始するための小さなコードを次に示します。
DataSource source = new DataSource(new File("mycsvinputfile"));
System.out.println(source.getStructure());
Instances data = source.getDataSet();
// setting class attribute if the data format does not provide this information
// For example, the XRFF format saves the class attribute information as well
if (data.classIndex() == -1)
data.setClassIndex(data.numAttributes() - 1);
//initialize svm classifier
LibSVM svm = new LibSVM();
svm.buildClassifier(data);
幸運を。
新しいバージョンでは、weka.jar が必要で、次のように svm を呼び出します。
WekaPackageManager.loadPackages( false, true, false );
AbstractClassifier classifier = ( AbstractClassifier ) Class.forName(
"weka.classifiers.functions.LibSVM" ).newInstance();
オプションを指定したい場合は、次のようにオプションを設定します
String options = ( "-S 0 -K 0 -D 3 -G 0.0 -R 0.0 -N 0.5 -M 40.0 -C 1.0 -E 0.001 -P 0.1" );
String[] optionsArray = options.split( " " );
classifier.setOptions( optionsArray );
最後に分類器をトレーニングします
classifier.buildClassifier( train );
Weka の連中は、最新バージョンで Maven Central から利用できるようにすることで、私たちの仕事を大幅に簡単にしてくれました。
ここから依存関係を取得するだけです: http://mvnrepository.com/artifact/nz.ac.waikato.cms.weka/LibSVM
依存関係に関する限り、すべてが機能します。ラッパーをいじったり、jar をクラスパスに追加したりする必要はありません。
バージョン 3.7.12 を使用していますが、GUI にパッケージ マネージャー機能が追加されてから使用可能になっていると思います。
最新バージョンの weka (3.7.9) で libSVM ライブラリを使用するには、weka アプリケーションの「パッケージ マネージャー」を使用して libSVM パッケージをインストールするだけです。
最後に、Java プロジェクトから、「パッケージ マネージャー」によって作成された LibSVM ライブラリをクラスパスに追加する必要があります。
通常は " (HOME)\wekafiles\packages\LibSVM " ディレクトリにあります。
Weka と libsvm を組み合わせるには、このリンクに従って ください http://www.cs.iastate.edu/~yasser/wlsvm/
weka は ROC、リコールなどの計算に適しています.... libsvm は分類、回帰などに適しています...