2014-12-06 2 views
0

Привет Я пытаюсь реализовать свой собственный классификатор в Java .Здесь это то, что я получил до сих пор:классификации набора данных в Java

import weka.core.*; 


public class RandomProbability extends Classifier { 
    Instances data; 

    public RandomProbability() 
    { 
     /*DataSource d = new DataSource("C:\\Program Files\\Weka-3-6\\data\\labor.arff"); 
     data=((Object) d).getSourceData();*/ 
     DataSource source = null; 
     try { 
      source = new DataSource("C:\\Program Files\\Weka-3-6\\data\\labor.arff"); 
     } catch (Exception e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 

     try { 
      Instances instances = source.getDataSet(); 

      //instances.setClassIndex(instances.numAttributes() - 1); 

      // Print header and instances. 
      System.out.println("\nDataset:\n"); 
      System.out.println(instances); 

Теперь проблема, я не могу получить его, чтобы классифицировать данные в набор данных (как хороший, так и плохой). Мне нужна помощь в попытке получить доступ к одному экземпляру в этом коде.

+0

Разве это не вид проверки говоря, хорошо или плохо? Или вы ищете проверку экземпляра и т. Д. Пожалуйста, уточните в вопросе. – SMA

+0

Недействительно. В основном мой набор данных о работе имеет эти два класса (хорошие или плохие) для данных, и я должен реализовать свой собственный классификатор, но я не знаю, как читать класс данных в наборе данных (файл .arff) , – aneena

+0

Вы можете использовать объект instanceOf MyClass для классификации типа экземпляра? – SMA

ответ

0

Вы можете использовать InstanceOf оператор, как показано ниже:

int countA = 0, countB=0; 
double pred; 
for (int i=0;i<57;i++) { 
    pred = classifyInstance(instances.instance(i)); 
    System.out.println("===== Classified instance ====="); 
    System.out.println("Class predicted:" + instances.classAttribute().value((int) pred)); 
    if (instances.classAttribute().value((int) pred).toString().equals("bad")) { 
     countB++; 
    } else { 
     countA++; 
    } 
} 
+0

, что здесь instanceof? – aneena

+0

int countA = 0, countB = 0; \t \t \t double pred; \t \t \t для (INT I = 0; г <57; я ++) \t \t \t { \t \t \t \t = classifyInstance пред (instances.instance (я)); \t \t System.out.println ("===== Классифицированный экземпляр ====="); \t \t System.out.println («Класс предсказал:» + instance.classAttribute(). Value ((int) pred)); \t \t если (instances.classAttribute() значение ((INT) ПРЕД) .ToString() == "плохо".) \t \t { \t \t \t countB ++; \t \t} \t \t еще { \t \t \t COUNTA ++; \t \t} \t \t \t \t \t \t \t} – aneena

+0

использование равно метод String. Я отредактировал свой ответ выше. – SMA

0
package dm; 
//import javax.activation.DataSource; 
import weka.core.converters.ConverterUtils.DataSource; 
import weka.classifiers.*; 
import weka.core.*; 
import org.jfree.data.*; 

import weka.core.*; 
public class RandomProbability extends Classifier { 
    Instances data; 

    public RandomProbability() 
    { 
     /*DataSource d = new DataSource("C:\\Program Files\\Weka-3-6\\data\\labor.arff"); 
     data=((Object) d).getSourceData();*/ 
     DataSource source = null; 
     try { 
      source = new DataSource("C:\\Program Files\\Weka-3-6\\data\\labor.arff"); 
     } catch (Exception e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
     try { 
      Instances instances = source.getDataSet(); 

      instances.setClassIndex(instances.numAttributes() - 1); 

      // Print header and instances. 
      System.out.println("\nDataset:\n"); 
      System.out.println(instances); 

      int total=instances.numInstances(); 
      System.out.println("total"+total); 

      Attribute attr= instances.attribute(16); 
      System.out.println("attr"+attr); 

      // checking class 
      int countA = 0, countB=0; 
      double pred; 
      for (int i=0;i<57;i++) 
      { 
        pred=0; 
        pred = classifyInstance(instances.instance(i)); 
        System.out.println("===== Classified instance ====="); 
        System.out.println("Class predicted:" + instances.classAttribute().value((int) pred)); 
        if (instances.classAttribute().value((int) pred).toString().equals("bad")) 
        { 
         countB++; 
        } 
        else { 
         countA++; 
        } 

      } 
      System.out.println("good instances"+countA); 
      System.out.println("bad instances"+ countB); 

     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    public void buildClassifier (Instances data) 
    { 

    } 

    public double classifyInstance (Instance inst) 
    { 
     return 0; 

    } 

} 
+0

это мой код до сих пор – aneena

+0

класс классификатора? класс экземпляров, класс атрибутов? – SMA

+0

есть встроенные классы из файла weka jar – aneena

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