Weka Линейная регрессия ClassNotFoundException
String filePath = new File("").getAbsolutePath();
DataSource source = new DataSource(filePath + "\\src\\data\\data.arff");
Instances dataset = source.getDataSet();
// set class
dataset.setClassIndex(0);
// build model
**LinearRegression lr = new LinearRegression();**
lr.buildClassifier(dataset);
System.out.println(lr);
Сразу после инстанцирования LinearRegression я получаю эту ошибку:
Исключение в потоке "main" java.lang.NoClassDefFoundError: no/uib/cipr/matrix/Matrix at weka_prediction.Main_LinearRegression.main(Main_LinearRegression.java:22) Причина: java.lang.ClassNotFoundException: no.uib.ciprix..Matrix на java.net.URLClassLoader.findClass(неизвестный источник) на java.lang.ClassLoader.loadClass(неизвестный источник) на sun.misc.Launcher$AppClassLoader.loadClass(неизвестный источник) на java.lang.ClassLoader.loadClass(неизвестный Источник) ... еще 1
Я использую weka 3.8.
есть идеи? заранее спасибо
4 ответа
Есть проблема с загрузкой weka.core. Вам просто нужно зайти в репозиторий weka, скачать и добавить следующие файлы:
- mtj.jar
- arpack_combined_all.jar
- core.jar
Подробнее смотрите здесь:
Решено! вместо 3.8 я сейчас использую 3.6 отсюда: http://grepcode.com/project/repo1.maven.org/maven2/nz.ac.waikato.cms.weka/weka-stable/
Вместо того, чтобы извлекать библиотеки MTJ и arpack, просто используйте менеджер пакетов Weka, чтобы разобраться с этим за вас. Он инициализирует управление пакетами и, при необходимости, автоматически добавит эти внутренние jar-файлы в свой путь к классам.
Вы делаете это, вызываяloadPackages
метод класса weka.core.WekaPackageManager .
Вот пример:
import weka.core.converters.ConverterUtils.DataSource;
import weka.core.Instances;
import weka.core.WekaPackageManager;
import weka.classifiers.functions.LinearRegression;
public class LR {
public static void main(String[] args) throws Exception {
// load packages and MTJ/arpack libraries (if necessary)
WekaPackageManager.loadPackages(false);
// load dataset
DataSource source = new DataSource(args[0]);
Instances dataset = source.getDataSet();
// set class
dataset.setClassIndex(dataset.numAttributes() - 1);
// build model
LinearRegression lr = new LinearRegression();
lr.buildClassifier(dataset);
System.out.println(lr);
}
}
Для тех, кто пытается использовать Weka как инструмент. Когда вы загрузите архив weka, разархивируйте его, вы найдете файл . А затем просто сделайте то, что @Kirill Karmazin сказал в комментарии здесь . распаковать 3 банкиarpack_combined.jar
,core.jar
иmtj.jar
и положить их рядом сweka.jar
.
Затем запуститеjava -cp * weka.gui.GUIChooser
для запуска графического интерфейса Weka.