SMO, последовательная минимальная оптимизация в WEKA - PullRequest
1 голос
/ 26 февраля 2012

Я новичок в Weka.Я хочу использовать Sequential Minimal Optimization в WEKA.Может ли кто-нибудь сказать мне, как поступить?Вот мой код Java, но он не работает:

public class SVMTest {
public void test(File input) throws Exception{
File tmp = new File("tmp-file-duplicate-pairs.arff");
String path = input.getParent();
//tmp.deleteOnExit();
////removeFeatures(input,tmp,useType,useNames, useActivities, useOccupation,useFriends,useMailAndSite,useLocations);
Instances data = new weka.core.converters.ConverterUtils.DataSource(tmp.getAbsolutePath()).getDataSet();
data.setClassIndex(data.numAttributes() - 1);
Classifier c = null;        
String ctype = null;
boolean newmodel = false;

ctype ="SMO";
c = new SMO();
String[] options = {"-M"};
c.setOptions(options);
c.buildClassifier(data);
newmodel = true;
//c = loadClassifier(input.getParentFile().getParentFile(),ctype);
if(newmodel)
    saveModel(c,ctype, input.getParentFile().getParentFile());
Evaluation eval = new Evaluation(data);
eval.crossValidateModel(c, data, 10, new Random(1));

System.out.println(c);
System.out.println(eval.toSummaryString());
System.out.println(eval.toClassDetailsString());
System.out.println(eval.toMatrixString());

tmp.delete();
}
 private static void saveModel(Classifier c, String name, File path) throws Exception {

ObjectOutputStream oos = null;
try {
    oos = new ObjectOutputStream(
            new FileOutputStream(path.getAbsolutePath()+"/"+name+".model"));
} catch (FileNotFoundException e1) {
    e1.printStackTrace();
} catch (IOException e1) {
    e1.printStackTrace();
}
oos.writeObject(c);
oos.flush();
oos.close();

 }
}

Я хочу знать, как предоставить файл .arff?мой набор данных находится в форме файлов XML.

Ответы [ 3 ]

1 голос
/ 30 июня 2012

Полагаю, вы уже поняли это, но в случае, если это поможет другим, есть вики-страница об этом:

http://weka.wikispaces.com/Text+categorization+with+WEKA

для использования SMO, скажем, выиметь несколько экземпляров train "trainset" и набор тестов "testset" для построения классификатора:

            // train SMO and output model
            SMO classifier = new SMO();
            classifier.buildClassifier(trainset);

, чтобы оценить его с помощью перекрестной проверки, например:

    Evaluation eval = new Evaluation(testset);
    Random rand = new Random(1); // using seed = 1
    int folds = 10;
    eval.crossValidateModel(classifier, testset, folds, rand);

, затем evalвсе характеристики и т. д.

0 голосов
/ 30 января 2014

Следующая ссылка объясняет об использовании SMO ​​в weka http://preciselyconcise.com/apis_and_installations/training_a_weka_classifier_in_java.php

0 голосов
/ 08 марта 2012

Вы можете прочитать входной файл из этих строк:

Instances training_data = new Instances(new BufferedReader(
        new FileReader("tmp-file-duplicate-pairs.arff")));
training_data.setClassIndex(training_data.numAttributes() - 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...