2015-07-14 6 views
2

Я создал модель в Weka Explorer, и я сохранил его как .MODEL файлWeka - Как использовать классификатор Java

Во-первых, я загрузить сохраненную модель из моей Java кода

Classifier cls = null; 
    try { 
     cls = (Classifier) weka.core.SerializationHelper.read("Model.model"); 
    } catch (Exception e1) { 
     e1.printStackTrace(); 
    } 

Затем я прочитал экземпляр, который я хочу, чтобы классифицировать, из .arff файла

BufferedReader reader = new BufferedReader(new FileReader(file)); 
ArffReader arff = new ArffReader(reader); 
Instances data = arff.getData(); 

файл, содержит только один экземпляр. Значение атрибута class - «?». С помощью приведенного ниже кода я пытаюсь сделать классификацию экземпляра.

data.setClassIndex(data.numAttributes()-1); 
      try { 

       double value=cls.classifyInstance(data.firstInstance()); 

       String prediction=data.classAttribute().value((int)value); 

       System.out.println("The predicted value of instance "+ 
            Integer.toString(s1)+ 
            ": "+prediction); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

Это правильный путь;

+0

Вы проверили пример на сайте weka? https://weka.wikispaces.com/Use+WEKA+in+your+Java+code – grubjesic

ответ

1

Это правильный образец кода, который делает то, что вы хотели этого сделать. Другим полезным методом является:

yourClassifier.distributionForInstance(yourInstance); 

, который возвращает double [] с вероятностями вашего экземпляра для каждой метки класса. Это полезно для непродуманных проблем, когда членство в классе может быть нечеткой концепцией.

0

См. Здесь Java-код с слайдами и текстовыми наборами данных. Он обучает машину, загружает модель и классифицирует невидимые текстовые данные в реальном времени. Очень легко следовать https://github.com/drelhaj/MachineLearning

Смежные вопросы