package ml.humaning.algorithm;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import weka.classifiers.bayes.NaiveBayes;
import weka.classifiers.functions.VotedPerceptron;
import weka.core.Instances;
import weka.core.converters.LibSVMLoader;
import weka.filters.Filter;
import weka.filters.unsupervised.attribute.NumericToNominal;
public class Perceptron {
Instances data;
VotedPerceptron vp;
public void train(String trainFile) throws Exception{
LibSVMLoader libsvmLoader = new LibSVMLoader();
libsvmLoader.setSource(new File(trainFile));
data = libsvmLoader.getDataSet();
// NumericToNominal filter = new NumericToNominal();
// filter.setInputFormat(data);
// data = Filter.useFilter(data, filter);
vp = new VotedPerceptron();
vp.buildClassifier(data);
}
public void predict(String testFile, String outputFile) throws Exception{
LibSVMLoader libsvmLoader = new LibSVMLoader();
libsvmLoader.setSource(new File(testFile));
Instances test = libsvmLoader.getDataSet();
// NumericToNominal filter = new NumericToNominal();
// filter.setInputFormat(test);
// test = Filter.useFilter(test, filter);
BufferedWriter bw = new BufferedWriter(new FileWriter(outputFile));
for (int i = 0; i < test.numInstances(); i++) {
double pred = vp.classifyInstance(test.instance(i));
//double [] hhh = nb.distributionForInstance(test.instance(i));
//System.out.println(pred);
//bw.write(data.classAttribute().value((int)pred)+"\n");
//System.out.println(data.classAttribute().value((int)pred)+"\n");
}
bw.close();
}
}