| NORSYS SOFTWARE © 2012 | NETICA API | C   VERSION   5.04  |
| tester_bn* NewNetTester_bn ( | nodelist_bn* test_nodes, nodelist_bn* unobsv_nodes, int tests ) |
Creates a tester_bn which is a tool for grading a Bayes net, using a set of real cases to see how well the predictions or diagnosis of the net match the actual cases. It is not for decision networks.
test_nodes are the nodes that the Bayes net will predict and get rated on. Their values in the case file are all hidden from the Bayes net (i.e., unobserved) whenever a case is read. For each such case, the Bayes net does a prediction and compares that prediction with the true value from the case file, accumulating statistics as it goes.
If unobsv_nodes is non-NULL, then the nodes it contains will also be unobserved. It is okay if it repeats nodes already in test_nodes.
Pass -1 for tests.
After creating the tester_bn object, you run the tests using TestWithCaseset_bn, and then read out the results of the tests with the GetTest... functions. When done, you discard the tester_bn with DeleteNetTester_bn.
IMPORTANT: Before calling TestWithCaseset_bn, you may want to call RetractNetFindings_bn to remove any findings entered, because otherwise those findings will be considered while testing each case in the file.
The same net-testing capability is available as "Cases -> Test With Cases" in Netica Application.
Version:
See also:
| TestWithCaseset_bn | Accumulate case data into the test | |
| GetTestConfusion_bn | Get elements of the confusion matrix | |
| GetTestErrorRate_bn | Get fraction of test cases where prediction failed | |
| GetTestLogLoss_bn | Get the "logarithmic loss" score of the test | |
| GetTestQuadraticLoss_bn | Get the "quadratic loss" score of the test | |
| DeleteNetTester_bn | Free up tester and all its resources | |
| NewNodeList2_bn | Create the node lists |
Example:
net_bn* net = ReadNet_bn (NewFileStream_ns ("ChestClinic.dne", env, NULL), NO_VISUAL_INFO);
nodelist_bn* unobsv_nodes = NewNodeList2_bn (0, net);
nodelist_bn* test_nodes = NewNodeList2_bn (0, net);
node_bn* test_node = GetNodeNamed_bn ("Cancer", net);
AddNodeToList_bn (test_node, test_nodes, LAST_ENTRY);
// Now make the unobserved nodes list out of other factors not known during diagnosis:
AddNodeToList_bn (GetNodeNamed_bn ("Tuberculosis", net), unobsv_nodes, LAST_ENTRY);
AddNodeToList_bn (GetNodeNamed_bn ("Bronchitis", net), unobsv_nodes, LAST_ENTRY);
AddNodeToList_bn (GetNodeNamed_bn ("TbOrCa", net), unobsv_nodes, LAST_ENTRY);
RetractNetFindings_bn (net); // IMPORTANT: Otherwise any findings will be part of tests !!
CompileNet_bn (net);
tester_bn* tester = NewNetTester_bn (test_nodes, unobsv_nodes, -1);
stream_ns* casefile = NewFileStream_ns ("ChestClinic.cas", env, NULL);
caseset_cs* caseset = NewCaseset_cs ("ChestClinicCases", env);
AddFileToCaseset_cs (caseset, casefile, 1.0, NULL);
TestWithCaseset_bn (tester, caseset);
PrintConfusionMatrix (tester, test_node); // defined in example for GetTestConfusion_bn
printf ("Error rate = %f %\n", 100 * GetTestErrorRate_bn (tester, test_node));
printf ("Logarithmic loss = %f %\n", GetTestLogLoss_bn (tester, test_node));
DeleteNetTester_bn (tester);
DeleteCaseset_cs (caseset);
//====================================================
Confusion matrix for Cancer:
Present Absent Actual
6 1 Present
1 192 Absent
Error rate = 1 %
Logarithmic loss = 0.02794