ЛибСВМ 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);