⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ts_tree_0.cc

📁 这是处理语音信号的程序
💻 CC
字号:
// file: ts_tree_0.cc//// isip include files//#include "tie_state.h"#include "tie_state_constants.h"// method: split_tree_cc// arguments ://   Decision_tree*& decision_tree: (input/output) the tree to be split//   Question** questions: (input) all the questions//   Hash_table* answers: (input) hash table containing answers//   State** states: (input) all the states//   float_4* occupancy: (input) the states occupancy//   int_4** l_context: (input) the left context of states//   int_4** r_context: (input) the right context of states//   float_4 split_threshd: (input) the likelihood threshold of split//   int_4 num_occ_threshd: (input) the minimum number of states threshold//   int_4 num_features: (input) the number of features//   int_4 num_mixtures: (input) the number of mixtures//   int_4 debug_level: (input) the debug level////  return: a logical_1 indicating status//// this function is to split one decision tree//logical_1 split_tree_cc(Decision_tree* decision_tree_a,			Question** questions_a, Hash_table* answers_a,			State** states_a, float_4* occupancy_a, 			int_4** l_context_a, int_4** r_context_a,			float_4 split_threshd_a, float_4 num_occ_threshd_a,			int_4 num_questions_a, int_4 num_features_a,			int_4 num_mixtures_a, int_4 debug_level_a) {      // local variables   //  Link_list* leaf_list = (Link_list*)NULL;  Link_node* link_nd = (Link_node*)NULL;    float_4 split_lk_inc = 0.0;  float_4 max_lk_inc = 0.0;    Dt_node* opt_split_node = (Dt_node*)NULL;  Dt_node* dt_node = (Dt_node*)NULL;  Dt_node* l_child = (Dt_node*)NULL;  Dt_node* r_child = (Dt_node*)NULL;        float_4 l_child_num_occ = 0;  float_4 r_child_num_occ = 0;  float_4 node_num_occ = 0;  // split this tree  //  // get the link list of all leaf nodes  //  leaf_list = decision_tree_a->get_leaf_list_cc();    // a flag to decide if conitnuing spilting the tree  //  logical_1 flag = ISIP_TRUE;      while(flag == ISIP_TRUE) {          link_nd = leaf_list->get_head_cc();    max_lk_inc = 0;          // loop all the leaf nodes and find the optimal node to split    //    while(link_nd != (Link_node*)NULL) {	      l_child_num_occ = 0;      r_child_num_occ = 0;      node_num_occ = 0;      // get the Dt_node      //      dt_node = (Dt_node*)(link_nd->get_item_cc());	      // compute or get the likelihood increase if splitting this node      // with its optimal question      //      if(dt_node->get_visit_flag_cc() == ISIP_FALSE) {	split_lk_inc = dt_node->	  compute_split_lk_inc_cc(questions_a, answers_a, states_a,				  occupancy_a, num_questions_a, num_features_a,				  num_mixtures_a, l_context_a, r_context_a,				  num_occ_threshd_a, l_child_num_occ,				  r_child_num_occ);      }      else {	split_lk_inc = dt_node->get_split_lk_inc_cc();      }            // get the node occupancy      //            node_num_occ = l_child_num_occ + r_child_num_occ;            if (split_lk_inc > max_lk_inc) {	max_lk_inc = split_lk_inc;	opt_split_node = dt_node;	      }            // set this node visited      //      dt_node->set_visit_flag_cc();      // get next node      //      link_nd = link_nd->get_next_cc();    }        if (opt_split_node == NULL) {      break;    }    else if (max_lk_inc > split_threshd_a) {      opt_split_node->split_node_cc(answers_a, l_context_a, r_context_a);              // set the flag to continue splitting       //            // compute the likelihood for the new leaf nodes      //      l_child = opt_split_node->get_l_child_cc();      r_child = opt_split_node->get_r_child_cc();      l_child->compute_likelihood_cc(states_a, occupancy_a, num_features_a,				     num_mixtures_a);      r_child->compute_likelihood_cc(states_a, occupancy_a, num_features_a,				     num_mixtures_a);            // remove this node from the leaf node list, add its child nodes      // into it      //      leaf_list->remove_cc(opt_split_node);      leaf_list->insert_cc(l_child);      leaf_list->insert_cc(r_child);      decision_tree_a->set_num_leaf_cc();          // print debug information if needed      //      if(debug_level_a > 0) {	fprintf(stdout, "%s[%ld]: %f occupancy: %f best_question: %s\n\n",		decision_tree_a->get_cph_cc(),		decision_tree_a->get_state_pos_cc(),		max_lk_inc,		opt_split_node->compute_occupancy_cc(occupancy_a),		opt_split_node->get_opt_question_cc()->get_attribute_cc());      }      // reset the optimal node      //      opt_split_node = NULL;    }    else {      break;    }  }    // exit gracefully  //  return ISIP_TRUE;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -