Повторное использование кода Weka для анализа файлов ARFF

StackOverflow https://stackoverflow.com/questions/3405045

  •  25-09-2019
  •  | 
  •  

Вопрос

Кто-нибудь сделал это? Есть ли документация о том, как использовать этот модуль парсера? Я просмотрел код, но мне не ясно, как на самом деле использовать данные после того, как она была анализирована.

Файл SRC Main Java Weka Core Converters Arffloader.java (который я предполагаю, где происходит табака ARFF) имеет эти инструкции:

  • Типичный код для пакетного использования:
  • BufferedReader Reader = New BufferedReader (новый FileReader («/ некоторые / где / file.arff»));
  • ARFFREADER ARFF = новый Arffreader (Reader);
  • Инстанции данных = Arff.getdata ();
  • data.setclassindex (data.numattributes () - 1);

Но что еще я могу сделать с «данными»? Как получить доступ к каждой строке и значениям в каждой строке?

(Кстати, я новичок в Java. Если я заберу этот код, есть ли какой-то анноспекция, я мог сделать на данных, чтобы увидеть, что он предлагает? Это то, что я бы сделал в Python.)

(Я также открыт для предложений для более простого открытого исходного анализатора ARFF для использования в моем проекте, если он существует.)

Это было полезно?

Решение

Это относится ко мне, что ваш ответ лежит в Instances класс - именно там, где хранятся данные.

Я бы нашел API классов экземпляров либо путем определения или создания его JavadOC или просто прочный источник. Методы этого класса должны позволять вам манипулировать данными, которые были загружены из файла ARFF.

Другие советы

Вы можете использовать Weka из Python, и получите самоанализ. Я успешно использовал Weka от Jruby, чтобы сделать то же самое. Google «Weka Documentation», чтобы найти страницу, которая ссылается на API для стабильной и версии разработки. У меня недостаточно репутации, чтобы поставить вторую ссылку в мой ответ :)

Парсер Weka тесно связан с их внутренней моделью данных - Instances.

Формат ARFF не так уж сложно разобрать, вам может быть лучше написать пользовательский анализатор, который напрямую создает желаемое представление данных.

После того, как у вас есть данные о объектах, вы можете использовать его для:

data.get(index) //get a instance
data.enumerateInstances() // Returns an enumeration of all instances in the dataset.

Вы можете увидеть все методы по адресу: Экземпляры Javadoc.

Я использовал что-то вроде этого:

public class Main {
    private static final String ARFF_FILE_PATH = "YOUR_ARFF_FILE_PATH";

    public static void main(String[] args) throws IOException {
        ArffLoader arffLoader = new ArffLoader();

        File datasetFile = new File(ARFF_FILE_PATH);
        arffLoader.setFile(datasetFile);

        Instances dataInstances = arffLoader.getDataSet();

        for(Instance inst : dataInstances){
            System.out.println("Instance:" + inst);
        }
    }
}
import java.io.*;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.converters.ArffLoader;
import weka.core.converters.ArffLoader.ArffReader;

public class assign3 {
     public static void main(String args[]) throws IOException {

ArffLoader arffloader=new ArffLoader();
File filedata = new File("/home/cse611/Downloads/iris.arff");
arffloader.setFile(filedata);

     Instances data = arffloader.getDataSet();`enter code here`
     for(Instance inst : data){
         System.out.println("Instance:" + inst);
     }
     }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top