ЛибСВМ Weka в C# с ИКВМ

Я использую библиотеку машинного обучения weka в C# с IKVM. Пока это работает очень хорошо, однако у меня возникли проблемы с использованием пакета libSVM.

Проблема возникает, когда я хочу создать экземпляр классификатора libsvm в C# (класс не найден), как рекомендуется:

AbstractClassifier classifier = (AbstractClassifier)java.lang.Class.forName("weka.classifiers.functions.LibSVM").newInstance();     

Что я пробовал:

  • Добавьте в проект файлы libsvm.dll и weka.dll (преобразованные из libsvm.jar и weka.jar).
  • Объедините libsvm.jar и weka.jar в одну dll и добавьте их в проект (используя ikvm или ilmerge)

Обратите внимание, что пакет установлен, так как он появляется в результате

WekaPackageManager.getInstalledPackages();

Кому-нибудь удалось с помощью IKVM использовать Weka с LibSVM в C#?

Спасибо, ботонд

1 ответ

У меня та же проблема, но я нашел решение на сайте: здесь.

Я использую weka.jar(версия 3.6) и получаю пакет libsvm из weka 3.8 {HOME}/wekafiles/packages/LibSVM

Шаг 1. Вам понадобятся: weka.jar, Libsvm.jar(LibSVM/LibSVM.jar), libsvm.jar (LibSVM/lib/libsvm.jar).

Шаг 2. Переименуйте Libsvm.jar в Libsvm1.jar.

Шаг 3. Запустите в IKVM: откройте командную строку и перейдите в папку bin ikvm

    ikvmc.exe -sharedclassloader -target:library weka.jar libsvm.jar LibSVM1.jar

Шаг 4. Ссылка на сгенерированный weka.dll в вашем C# проекте.

Шаг 5. Пример кода в C#

LibSVM svm = new LibSVM();
svm.setOptions(weka.core.Utils.splitOptions("-S 3 -K 2 -D 3 -G 0.0 -R 0.0 -N 0.5 -M 40.0 -C 1.0 -E 0.001 -P 0.1 -seed 1"));
svm.buildClassifier(dataset);
Другие вопросы по тегам