use of edu.neu.ccs.pyramid.dataset.MultiLabel in project pyramid by cheng-li.
the class Recall method recall.
@Deprecated
public static /**
* From "Mining Multi-label Data by Grigorios Tsoumakas".
* @param multiLabels
* @param predictions
* @return
*/
double recall(MultiLabel[] multiLabels, MultiLabel[] predictions) {
double r = 0.0;
for (int i = 0; i < multiLabels.length; i++) {
MultiLabel label = multiLabels[i];
MultiLabel prediction = predictions[i];
if (label.getMatchedLabels().size() == 0) {
r += 1.0;
} else {
r += MultiLabel.intersection(label, prediction).size() * 1.0 / label.getMatchedLabels().size();
}
}
return r / multiLabels.length;
}
use of edu.neu.ccs.pyramid.dataset.MultiLabel in project pyramid by cheng-li.
the class MarginalPredictor method predict.
@Override
public MultiLabel predict(Vector vector) {
BMDistribution bmDistribution = new BMDistribution(cbm, vector, piThreshold);
double[] probs = bmDistribution.marginals();
MultiLabel prediction = new MultiLabel();
for (int l = 0; l < cbm.getNumClasses(); l++) {
if (probs[l] > 0.5) {
prediction.addLabel(l);
}
}
return prediction;
}
use of edu.neu.ccs.pyramid.dataset.MultiLabel in project pyramid by cheng-li.
the class SparkCBMOptimizer method updateGamma.
private void updateGamma(int n) {
Vector x = dataSet.getRow(n);
MultiLabel y = dataSet.getMultiLabels()[n];
double[] posterior = cbm.posteriorMembership(x, y);
for (int k = 0; k < cbm.numComponents; k++) {
gammas[n][k] = posterior[k];
gammasT[k][n] = posterior[k];
}
}
use of edu.neu.ccs.pyramid.dataset.MultiLabel in project pyramid by cheng-li.
the class BlockwiseCD method calEmpiricalCountForLabelPair.
private double calEmpiricalCountForLabelPair(int parameterIndex) {
double empiricalCount = 0.0;
int start = parameterIndex - numWeightsForFeatures;
int l1 = parameterToL1[start];
int l2 = parameterToL2[start];
int featureCase = start % 4;
for (int i = 0; i < dataSet.getNumDataPoints(); i++) {
MultiLabel label = dataSet.getMultiLabels()[i];
switch(featureCase) {
// both l1, l2 equal 0;
case 0:
if (!label.matchClass(l1) && !label.matchClass(l2))
empiricalCount += 1.0;
break;
// l1 = 1; l2 = 0;
case 1:
if (label.matchClass(l1) && !label.matchClass(l2))
empiricalCount += 1.0;
break;
// l1 = 0; l2 = 1;
case 2:
if (!label.matchClass(l1) && label.matchClass(l2))
empiricalCount += 1.0;
break;
// l1 = 1; l2 = 1;
case 3:
if (label.matchClass(l1) && label.matchClass(l2))
empiricalCount += 1.0;
break;
default:
throw new RuntimeException("feature case :" + featureCase + " failed.");
}
}
return empiricalCount;
}
use of edu.neu.ccs.pyramid.dataset.MultiLabel in project pyramid by cheng-li.
the class CMLCRF method predictByArgmax.
public MultiLabel predictByArgmax(Vector vector) {
double[] scores = predictClassScores(vector);
MultiLabel label = new MultiLabel();
for (int l = 0; l < scores.length; l++) {
if (scores[l] > 0) {
label.addLabel(l);
}
}
return label;
}
Aggregations