use of edu.neu.ccs.pyramid.configuration.Config in project pyramid by cheng-li.
the class App3 method createApp1Config.
private static Config createApp1Config(Config config) {
Config app1Config = new Config();
String[] same = { "output.folder", "output.trainFolder", "output.testFolder", "output.log", "train.feature.useInitialFeatures", "train.feature.categFeature.filter", "train.feature.categFeature.percentThreshold", "train.feature.ngram.n", "train.feature.ngram.minDf", "train.feature.ngram.slop", "train.feature.missingValue", "train.feature.addExternalNgrams", "train.feature.externalNgramFile", "train.feature.analyzer", "train.feature.filterNgramsByKeyWords", "train.feature.filterNgrams.keyWordsFile", "train.feature.filterNgramsByRegex", "train.feature.filterNgrams.regex", "train.feature.useCodeDescription", "train.feature.codeDesc.File", "train.feature.codeDesc.analyzer", "train.feature.codeDesc.matchField", "train.feature.codeDesc.minMatchPercentage", "index.indexName", "index.clusterName", "index.documentType", "index.clientType", "index.hosts", "index.ports", "train.label.field", "train.label.filter", "train.label.filter.prefix", "train.feature.featureFieldPrefix", "train.feature.ngram.extractionFields", "train.splitQuery", "test.splitQuery", "train.feature.ngram.matchScoreType", "createTrainSet", "createTestSet", "train.feature.ngram.selection", "train.feature.ngram.selectPerLabel", "train.label.order" };
Config.copyExisting(config, app1Config, same);
return app1Config;
}
use of edu.neu.ccs.pyramid.configuration.Config in project pyramid by cheng-li.
the class App3 method createApp2Config.
private static Config createApp2Config(Config config) {
Config app2Config = new Config();
String[] same = { "output.folder", "output.log", "train", "test", "tune", "predict.target", "train.warmStart", "train.usePrior", "train.numIterations", "train.numLeaves", "train.learningRate", "train.minDataPerLeaf", "train.numSplitIntervals", "train.showTrainProgress", "train.showTestProgress", "train.earlyStop.patience", "train.earlyStop.minIterations", "train.earlyStop", "train.earlyStop.absoluteChange", "train.earlyStop.relativeChange", "train.showProgress.interval", "train.generateReports", "tune.data", "tune.FMeasure.beta", "report.topFeatures.limit", "report.rule.limit", "report.numDocsPerFile", "report.classProbThreshold", "report.labelSetLimit", "report.showPredictionDetail" };
Config.copyExisting(config, app2Config, same);
app2Config.setString("input.folder", config.getString("output.folder"));
app2Config.setString("input.trainData", config.getString("output.trainFolder"));
app2Config.setString("input.testData", config.getString("output.testFolder"));
return app2Config;
}
use of edu.neu.ccs.pyramid.configuration.Config in project pyramid by cheng-li.
the class App3 method main.
public static void main(String[] args) throws Exception {
if (args.length != 1) {
throw new IllegalArgumentException("Please specify a properties file.");
}
Config config = new Config(args[0]);
Logger logger = Logger.getAnonymousLogger();
String logFile = config.getString("output.log");
FileHandler fileHandler = null;
if (!logFile.isEmpty()) {
new File(logFile).getParentFile().mkdirs();
//todo should append?
fileHandler = new FileHandler(logFile, true);
java.util.logging.Formatter formatter = new SimpleFormatter();
fileHandler.setFormatter(formatter);
logger.addHandler(fileHandler);
logger.setUseParentHandlers(false);
}
logger.info(config.toString());
if (fileHandler != null) {
fileHandler.close();
}
File output = new File(config.getString("output.folder"));
output.mkdirs();
Config app1Config = createApp1Config(config);
Config app2Config = createApp2Config(config);
App1.main(app1Config);
App2.main(app2Config);
}
use of edu.neu.ccs.pyramid.configuration.Config in project pyramid by cheng-li.
the class CBMEN method reportF1Prediction.
private static void reportF1Prediction(Config config, CBM cbm, MultiLabelClfDataSet dataSet) throws Exception {
System.out.println("============================================================");
System.out.println("Making predictions on test set with the instance F1 optimal predictor");
String output = config.getString("output.dir");
PluginF1 pluginF1 = new PluginF1(cbm);
List<MultiLabel> support = (List<MultiLabel>) Serialization.deserialize(new File(output, "support"));
pluginF1.setSupport(support);
pluginF1.setPiThreshold(config.getDouble("predict.piThreshold"));
MultiLabel[] predictions = pluginF1.predict(dataSet);
MLMeasures mlMeasures = new MLMeasures(dataSet.getNumClasses(), dataSet.getMultiLabels(), predictions);
System.out.println("test performance with the instance F1 optimal predictor");
System.out.println(mlMeasures);
File performanceFile = Paths.get(output, "test_predictions", "instance_f1_optimal", "performance.txt").toFile();
FileUtils.writeStringToFile(performanceFile, mlMeasures.toString());
System.out.println("test performance is saved to " + performanceFile.toString());
// Here we do not use approximation
double[] setProbs = IntStream.range(0, predictions.length).parallel().mapToDouble(i -> cbm.predictAssignmentProb(dataSet.getRow(i), predictions[i])).toArray();
File predictionFile = Paths.get(output, "test_predictions", "instance_f1_optimal", "predictions.txt").toFile();
try (BufferedWriter br = new BufferedWriter(new FileWriter(predictionFile))) {
for (int i = 0; i < dataSet.getNumDataPoints(); i++) {
br.write(predictions[i].toString());
br.write(":");
br.write("" + setProbs[i]);
br.newLine();
}
}
System.out.println("predicted sets and their probabilities are saved to " + predictionFile.getAbsolutePath());
System.out.println("============================================================");
}
use of edu.neu.ccs.pyramid.configuration.Config in project pyramid by cheng-li.
the class CBMLR method reportF1Prediction.
private static void reportF1Prediction(Config config, CBM cbm, MultiLabelClfDataSet dataSet) throws Exception {
System.out.println("============================================================");
System.out.println("Making predictions on test set with the instance F1 optimal predictor");
String output = config.getString("output.dir");
PluginF1 pluginF1 = new PluginF1(cbm);
List<MultiLabel> support = (List<MultiLabel>) Serialization.deserialize(new File(output, "support"));
pluginF1.setSupport(support);
pluginF1.setPiThreshold(config.getDouble("predict.piThreshold"));
MultiLabel[] predictions = pluginF1.predict(dataSet);
MLMeasures mlMeasures = new MLMeasures(dataSet.getNumClasses(), dataSet.getMultiLabels(), predictions);
System.out.println("test performance with the instance F1 optimal predictor");
System.out.println(mlMeasures);
File performanceFile = Paths.get(output, "test_predictions", "instance_f1_optimal", "performance.txt").toFile();
FileUtils.writeStringToFile(performanceFile, mlMeasures.toString());
System.out.println("test performance is saved to " + performanceFile.toString());
// Here we do not use approximation
double[] setProbs = IntStream.range(0, predictions.length).parallel().mapToDouble(i -> cbm.predictAssignmentProb(dataSet.getRow(i), predictions[i])).toArray();
File predictionFile = Paths.get(output, "test_predictions", "instance_f1_optimal", "predictions.txt").toFile();
try (BufferedWriter br = new BufferedWriter(new FileWriter(predictionFile))) {
for (int i = 0; i < dataSet.getNumDataPoints(); i++) {
br.write(predictions[i].toString());
br.write(":");
br.write("" + setProbs[i]);
br.newLine();
}
}
System.out.println("predicted sets and their probabilities are saved to " + predictionFile.getAbsolutePath());
System.out.println("============================================================");
}
Aggregations