use of edu.neu.ccs.pyramid.util.Pair in project pyramid by cheng-li.
the class GeneralF1Predictor method bestWithLengthK.
private Pair<MultiLabel, Double> bestWithLengthK(double[] deltaVector, int k) {
int[] sortedIndcies = ArgSort.argSortDescending(deltaVector);
MultiLabel multiLabel = new MultiLabel();
double score = 0;
for (int i = 0; i < k; i++) {
int label = sortedIndcies[i];
multiLabel.addLabel(label);
score += deltaVector[label];
}
return new Pair<>(multiLabel, score);
}
use of edu.neu.ccs.pyramid.util.Pair in project pyramid by cheng-li.
the class LibSvmFormat method save.
public static void save(ClfDataSet dataSet, String libSvmFile) {
File matrixFile = new File(libSvmFile);
int numDataPoints = dataSet.getNumDataPoints();
int[] labels = dataSet.getLabels();
try (BufferedWriter bw = new BufferedWriter(new FileWriter(matrixFile))) {
for (int i = 0; i < numDataPoints; i++) {
int label = labels[i];
bw.write(label + " ");
Vector vector = dataSet.getRow(i);
// only write non-zeros
List<Pair<Integer, Double>> pairs = new ArrayList<>();
for (Vector.Element element : vector.nonZeroes()) {
Pair<Integer, Double> pair = new Pair<>(element.index() + 1, element.get());
pairs.add(pair);
}
Comparator<Pair<Integer, Double>> comparator = Comparator.comparing(Pair::getFirst);
List<Pair<Integer, Double>> sorted = pairs.stream().sorted(comparator).collect(Collectors.toList());
for (Pair<Integer, Double> pair : sorted) {
bw.write(pair.getFirst() + ":" + pair.getSecond() + " ");
}
bw.write("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}
use of edu.neu.ccs.pyramid.util.Pair in project pyramid by cheng-li.
the class LibSvmFormat method save.
public static void save(MultiLabelClfDataSet dataSet, String libSvmFile) {
File matrixFile = new File(libSvmFile);
int numDataPoints = dataSet.getNumDataPoints();
MultiLabel[] multiLabels = dataSet.getMultiLabels();
try (BufferedWriter bw = new BufferedWriter(new FileWriter(matrixFile))) {
for (int i = 0; i < numDataPoints; i++) {
MultiLabel multiLabel = multiLabels[i];
List<Integer> labels = multiLabel.getMatchedLabels().stream().sorted().collect(Collectors.toList());
for (int l = 0; l < labels.size(); l++) {
bw.write(labels.get(l).toString());
if (l != labels.size() - 1) {
bw.write(",");
} else {
bw.write(" ");
}
}
Vector vector = dataSet.getRow(i);
// only write non-zeros
List<Pair<Integer, Double>> pairs = new ArrayList<>();
for (Vector.Element element : vector.nonZeroes()) {
Pair<Integer, Double> pair = new Pair<>(element.index() + 1, element.get());
pairs.add(pair);
}
Comparator<Pair<Integer, Double>> comparator = Comparator.comparing(Pair::getFirst);
List<Pair<Integer, Double>> sorted = pairs.stream().sorted(comparator).collect(Collectors.toList());
for (Pair<Integer, Double> pair : sorted) {
bw.write(pair.getFirst() + ":" + pair.getSecond() + " ");
}
bw.write("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}
use of edu.neu.ccs.pyramid.util.Pair in project pyramid by cheng-li.
the class TRECFormat method writeMatrixFile.
private static void writeMatrixFile(MultiLabelClfDataSet dataSet, File trecFile) {
File matrixFile = new File(trecFile, TREC_MATRIX_FILE_NAME);
int numDataPoints = dataSet.getNumDataPoints();
MultiLabel[] multiLabels = dataSet.getMultiLabels();
try (BufferedWriter bw = new BufferedWriter(new FileWriter(matrixFile))) {
for (int i = 0; i < numDataPoints; i++) {
MultiLabel multiLabel = multiLabels[i];
List<Integer> labels = multiLabel.getMatchedLabels().stream().sorted().collect(Collectors.toList());
for (int l = 0; l < labels.size(); l++) {
bw.write(labels.get(l).toString());
if (l != labels.size() - 1) {
bw.write(",");
}
}
bw.write(" ");
Vector vector = dataSet.getRow(i);
// only write non-zeros
List<Pair<Integer, Double>> pairs = new ArrayList<>();
for (Vector.Element element : vector.nonZeroes()) {
Pair<Integer, Double> pair = new Pair<>(element.index(), element.get());
pairs.add(pair);
}
Comparator<Pair<Integer, Double>> comparator = Comparator.comparing(Pair::getFirst);
List<Pair<Integer, Double>> sorted = pairs.stream().sorted(comparator).collect(Collectors.toList());
for (Pair<Integer, Double> pair : sorted) {
bw.write(pair.getFirst() + ":" + pair.getSecond() + " ");
}
bw.write("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}
use of edu.neu.ccs.pyramid.util.Pair in project pyramid by cheng-li.
the class TRECFormat method writeMatrixFile.
private static void writeMatrixFile(RegDataSet dataSet, File trecFile) {
File matrixFile = new File(trecFile, TREC_MATRIX_FILE_NAME);
int numDataPoints = dataSet.getNumDataPoints();
double[] labels = dataSet.getLabels();
try (BufferedWriter bw = new BufferedWriter(new FileWriter(matrixFile))) {
for (int i = 0; i < numDataPoints; i++) {
double label = labels[i];
bw.write(label + " ");
Vector vector = dataSet.getRow(i);
// only write non-zeros
List<Pair<Integer, Double>> pairs = new ArrayList<>();
for (Vector.Element element : vector.nonZeroes()) {
Pair<Integer, Double> pair = new Pair<>(element.index(), element.get());
pairs.add(pair);
}
Comparator<Pair<Integer, Double>> comparator = Comparator.comparing(Pair::getFirst);
List<Pair<Integer, Double>> sorted = pairs.stream().sorted(comparator).collect(Collectors.toList());
for (Pair<Integer, Double> pair : sorted) {
bw.write(pair.getFirst() + ":" + pair.getSecond() + " ");
}
bw.write("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}
Aggregations