use of structures._Edge in project IR_Base by Linda-sunshine.
the class GaussianFieldsByRandomWalk method debugSummary.
void debugSummary(_Doc d) {
int id = d.getID();
_Node node = m_nodeList[id];
double sim, wijSumU = 0, wijSumL = 0;
double fSumU = 0, fSumL = 0;
try {
m_debugWriter.write(String.format("%d\t%.4f(%d*,%d)\t%d\n", // ground-truth
d.getYLabel(), // random walk's raw prediction
node.m_pred, // map to discrete label
getLabel(node.m_pred), // consider the prior
getLabel3(node.m_pred), // multiple learner's prediction
(int) node.m_classifierPred));
double mean = 0, sd = 0;
/**
**Walk through the top k labeled data for the current data.***
*/
for (_Edge edge : node.m_labeledEdges) {
// get the similarity between two nodes.
wijSumL += edge.getSimilarity();
fSumL += edge.getSimilarity() * edge.getLabel();
sd += edge.getSimilarity() * edge.getSimilarity();
}
mean = wijSumL / m_k;
sd = Math.sqrt(sd / m_k - mean * mean);
/**
**Get the top 10 elements from labeled neighbors*****
*/
for (int k = 0; k < 10; k++) {
_Edge item = node.m_labeledEdges.get(k);
sim = item.getSimilarity() / wijSumL;
if (k == 0)
m_debugWriter.write(String.format("L(%.2f)\t[%d:%.4f, ", fSumL / wijSumL, (int) item.getLabel(), sim));
else if (k == 9)
m_debugWriter.write(String.format("%d:%.4f]\t%.3f\t%.3f\n", (int) item.getLabel(), sim, mean, sd));
else
m_debugWriter.write(String.format("%d:%.4f, ", (int) item.getLabel(), sim));
}
sd = 0;
/**
**Construct the top k' unlabeled data for the current data.***
*/
for (_Edge edge : node.m_unlabeledEdges) {
// get the similarity between two nodes.
wijSumU += edge.getSimilarity();
fSumU += edge.getSimilarity() * edge.getPred();
sd += edge.getSimilarity() * edge.getSimilarity();
}
mean = wijSumU / m_kPrime;
sd = Math.sqrt(sd / m_kPrime - mean * mean);
/**
**Get the top 10 elements from k'UU*****
*/
for (int k = 0; k < 10; k++) {
_Edge item = node.m_unlabeledEdges.get(k);
sim = item.getSimilarity() / wijSumU;
if (k == 0)
m_debugWriter.write(String.format("U(%.2f)\t[%.2f:%.4f, ", fSumU / wijSumU, item.getPred(), sim));
else if (k == 9)
m_debugWriter.write(String.format("%.2f:%.4f]\t%.3f\t%.3f\n", item.getPred(), sim, mean, sd));
else
m_debugWriter.write(String.format("%.2f:%.4f, ", item.getPred(), sim));
}
m_debugWriter.write("\n");
} catch (IOException e) {
e.printStackTrace();
}
}
Aggregations