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.

Другие вопросы по тегам