Search in sources :

Example 6 with structures._Edge

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();
    }
}
Also used : structures._Edge(structures._Edge) IOException(java.io.IOException) structures._Node(structures._Node)

Aggregations

structures._Edge (structures._Edge)6 structures._Node (structures._Node)5 IOException (java.io.IOException)2 structures._Doc (structures._Doc)1