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