int main(int argc, char* argv[]) {
    ios_base::sync_with_stdio(0);

    string data_infile = string(argv[1]);
    string network_infile = string(argv[2]);
    string child_name = string("C1");

    if (argv[3] == string("EM") || argv[3] == string("Smile")) {
        DSL_network net = LearnParamsEM(data_infile, network_infile, child_name);
        int childIdx = net.FindNode(child_name.c_str());
        DSL_node* childNode = net.GetNode(childIdx);

        if (argv[3] == string("Smile")) {
            childNode->ChangeType(DSL_NOISY_MAX);
        }

        //printCPT(childNode);

    } else if (argv[3] == string("Naive")) {
        DSL_network net = LearnParamsNaive(data_infile, network_infile, child_name);
        //int childIdx = net.FindNode(child_name.c_str());
        //DSL_node* childNode = net.GetNode(childIdx);
        //printCPT(childNode);

    } else if (argv[3] == string("Gauss")) {
        DSL_network net = LearnParamsGaussJordan(data_infile, network_infile, child_name);
        //int childIdx = net.FindNode(child_name.c_str());
        //DSL_node* childNode = net.GetNode(childIdx);
        //printCPT(childNode);
    } else if (argv[3] == string("NvGJ")) {

        DSL_network netGJ = LearnParamsGaussJordan(data_infile, network_infile, child_name);
        DSL_network netNaive = LearnParamsNaive(data_infile, network_infile, child_name);
        DSL_network netEM = LearnParamsEM(data_infile, network_infile, child_name);

        DSL_network netOriginal = OpenNetwork(network_infile);

        vf1D weights = getWeights(netOriginal, child_name);

        vf2D cptGJ = getCPTArray(netGJ, child_name);
        vf2D cptNaive = getCPTArray(netNaive, child_name);
        vf2D cptEM = getCPTArray(netEM, child_name);

        vf2D cptOriginal = getCPTArray(netOriginal, child_name);

        cout << "Gauss:" << EuclidianDistance( cptOriginal, cptGJ, weights) << endl;
        cout << "Naive:" << EuclidianDistance( cptOriginal, cptNaive, weights) << endl;
        cout << "EM:" << EuclidianDistance( cptOriginal, cptEM, weights) << endl;

        //cout << "Euclidian distance (orig vs GJ):    " << EuclidianDistance(original, netGJ, child_name) << endl;
        //cout << "Euclidian distance (orig vs Naive): " << EuclidianDistance(original, netNaive, child_name) << endl;
        //int childIdx = net.FindNode(child_name.c_str());

    }

    return 0;
}
Example #2
0
int node_ChangeType(void * void_node, int newType)
{
	DSL_node * node = reinterpret_cast<DSL_node*>(void_node);
	return node->ChangeType(newType);
}