diff --git a/examples/undocumented/libshogun/modelselection_apply_parameter_tree.cpp b/examples/undocumented/libshogun/modelselection_apply_parameter_tree.cpp index af23eecd82d..fc5dffe07ed 100644 --- a/examples/undocumented/libshogun/modelselection_apply_parameter_tree.cpp +++ b/examples/undocumented/libshogun/modelselection_apply_parameter_tree.cpp @@ -27,9 +27,6 @@ CModelSelectionParameters* create_param_tree() { CModelSelectionParameters* root=new CModelSelectionParameters(); - CModelSelectionParameters* kernel=new CModelSelectionParameters("kernel"); - root->append_child(kernel); - CModelSelectionParameters* c=new CModelSelectionParameters("C1"); root->append_child(c); c->build_values(1, 2, R_EXP); @@ -38,7 +35,7 @@ CModelSelectionParameters* create_param_tree() CModelSelectionParameters* param_gaussian_kernel= new CModelSelectionParameters("kernel", gaussian_kernel); - kernel->append_child(param_gaussian_kernel); + root->append_child(param_gaussian_kernel); CModelSelectionParameters* param_gaussian_kernel_width= new CModelSelectionParameters("width"); diff --git a/examples/undocumented/libshogun/modelselection_model_selection_parameters_test.cpp b/examples/undocumented/libshogun/modelselection_model_selection_parameters_test.cpp index fcdcb104cb5..5006e5c0aac 100644 --- a/examples/undocumented/libshogun/modelselection_model_selection_parameters_test.cpp +++ b/examples/undocumented/libshogun/modelselection_model_selection_parameters_test.cpp @@ -27,9 +27,6 @@ CModelSelectionParameters* build_complex_example_tree() { CModelSelectionParameters* root=new CModelSelectionParameters(); - CModelSelectionParameters* kernel=new CModelSelectionParameters("kernel"); - root->append_child(kernel); - CModelSelectionParameters* c=new CModelSelectionParameters("C"); root->append_child(c); c->build_values(1, 1, R_EXP); @@ -38,7 +35,7 @@ CModelSelectionParameters* build_complex_example_tree() CModelSelectionParameters* param_power_kernel= new CModelSelectionParameters("kernel", power_kernel); - kernel->append_child(param_power_kernel); + root->append_child(param_power_kernel); CModelSelectionParameters* param_power_kernel_degree= new CModelSelectionParameters("degree"); @@ -60,7 +57,7 @@ CModelSelectionParameters* build_complex_example_tree() CModelSelectionParameters* param_gaussian_kernel= new CModelSelectionParameters("kernel", gaussian_kernel); - kernel->append_child(param_gaussian_kernel); + root->append_child(param_gaussian_kernel); CModelSelectionParameters* param_gaussian_kernel_width= new CModelSelectionParameters("width"); @@ -71,7 +68,7 @@ CModelSelectionParameters* build_complex_example_tree() CModelSelectionParameters* param_ds_kernel=new CModelSelectionParameters("kernel", ds_kernel); - kernel->append_child(param_ds_kernel); + root->append_child(param_ds_kernel); CModelSelectionParameters* param_ds_kernel_delta= new CModelSelectionParameters("delta"); @@ -108,19 +105,6 @@ CModelSelectionParameters* build_root_no_childs_tree() return new CModelSelectionParameters(); } -CModelSelectionParameters* build_name_node_one_child_tree() -{ - CModelSelectionParameters* kernel=new CModelSelectionParameters("kernel"); - - CPowerKernel* power_kernel=new CPowerKernel(); - CModelSelectionParameters* param_power_kernel=new CModelSelectionParameters( - "kernel", power_kernel); - - kernel->append_child(param_power_kernel); - - return kernel; -} - CModelSelectionParameters* build_root_value_childs_tree() { CModelSelectionParameters* root=new CModelSelectionParameters(); @@ -136,29 +120,23 @@ CModelSelectionParameters* build_root_value_childs_tree() return root; } -CModelSelectionParameters* build_root_name_sg_object_child_tree() +CModelSelectionParameters* build_root_sg_object_child_tree() { CModelSelectionParameters* root=new CModelSelectionParameters(); - CModelSelectionParameters* kernel=new CModelSelectionParameters("kernel"); - root->append_child(kernel); - CPowerKernel* power_kernel=new CPowerKernel(); CModelSelectionParameters* param_power_kernel= new CModelSelectionParameters("kernel", power_kernel); - kernel->append_child(param_power_kernel); + root->append_child(param_power_kernel); return root; } -CModelSelectionParameters* build_root_name_sg_object_child_value_child_tree() +CModelSelectionParameters* build_root_sg_object_child_value_child_tree() { CModelSelectionParameters* root=new CModelSelectionParameters(); - CModelSelectionParameters* kernel=new CModelSelectionParameters("kernel"); - root->append_child(kernel); - CPowerKernel* power_kernel=new CPowerKernel(); CModelSelectionParameters* param_power_kernel= new CModelSelectionParameters("kernel", power_kernel); @@ -167,7 +145,7 @@ CModelSelectionParameters* build_root_name_sg_object_child_value_child_tree() root->append_child(c); c->build_values(1, 1, R_EXP); - kernel->append_child(param_power_kernel); + root->append_child(param_power_kernel); return root; } @@ -212,22 +190,17 @@ int main(int argc, char **argv) test_get_combinations(tree); SG_UNREF(tree); - tree=build_name_node_one_child_tree(); - SG_REF(tree); - test_get_combinations(tree); - SG_UNREF(tree); - tree=build_root_value_childs_tree(); SG_REF(tree); test_get_combinations(tree); SG_UNREF(tree); - tree=build_root_name_sg_object_child_tree(); + tree=build_root_sg_object_child_tree(); SG_REF(tree); test_get_combinations(tree); SG_UNREF(tree); - tree=build_root_name_sg_object_child_value_child_tree(); + tree=build_root_sg_object_child_value_child_tree(); SG_REF(tree); test_get_combinations(tree); SG_UNREF(tree); diff --git a/examples/undocumented/libshogun/modelselection_parameter_tree.cpp b/examples/undocumented/libshogun/modelselection_parameter_tree.cpp index 86c23d263c9..985fb4bd8d6 100644 --- a/examples/undocumented/libshogun/modelselection_parameter_tree.cpp +++ b/examples/undocumented/libshogun/modelselection_parameter_tree.cpp @@ -27,9 +27,6 @@ CModelSelectionParameters* create_param_tree() { CModelSelectionParameters* root=new CModelSelectionParameters(); - CModelSelectionParameters* kernel=new CModelSelectionParameters("kernel"); - root->append_child(kernel); - CModelSelectionParameters* c=new CModelSelectionParameters("C"); root->append_child(c); c->build_values(1, 11, R_EXP); @@ -38,7 +35,7 @@ CModelSelectionParameters* create_param_tree() CModelSelectionParameters* param_power_kernel= new CModelSelectionParameters("kernel", power_kernel); - kernel->append_child(param_power_kernel); + root->append_child(param_power_kernel); CModelSelectionParameters* param_power_kernel_degree= new CModelSelectionParameters("degree"); @@ -60,7 +57,7 @@ CModelSelectionParameters* create_param_tree() CModelSelectionParameters* param_gaussian_kernel= new CModelSelectionParameters("kernel", gaussian_kernel); - kernel->append_child(param_gaussian_kernel); + root->append_child(param_gaussian_kernel); CModelSelectionParameters* param_gaussian_kernel_width= new CModelSelectionParameters("width"); @@ -71,7 +68,7 @@ CModelSelectionParameters* create_param_tree() CModelSelectionParameters* param_ds_kernel=new CModelSelectionParameters("kernel", ds_kernel); - kernel->append_child(param_ds_kernel); + root->append_child(param_ds_kernel); CModelSelectionParameters* param_ds_kernel_delta= new CModelSelectionParameters("delta"); diff --git a/examples/undocumented/python_modular/modelselection_parameter_tree_modular.py b/examples/undocumented/python_modular/modelselection_parameter_tree_modular.py index 9f2f8361c60..0298a55a11c 100644 --- a/examples/undocumented/python_modular/modelselection_parameter_tree_modular.py +++ b/examples/undocumented/python_modular/modelselection_parameter_tree_modular.py @@ -22,16 +22,13 @@ def modelselection_parameter_tree_modular(): combinations=root.get_combinations() combinations.get_num_elements() - kernel=ModelSelectionParameters('kernel') - root.append_child(kernel) - c=ModelSelectionParameters('C'); root.append_child(c) c.build_values(1, 11, R_EXP) power_kernel=PowerKernel() param_power_kernel=ModelSelectionParameters('kernel', power_kernel) - kernel.append_child(param_power_kernel) + root.append_child(param_power_kernel) param_power_kernel_degree=ModelSelectionParameters('degree') param_power_kernel_degree.build_values(1, 1, R_EXP) @@ -49,7 +46,7 @@ def modelselection_parameter_tree_modular(): gaussian_kernel=GaussianKernel() param_gaussian_kernel=ModelSelectionParameters('kernel', gaussian_kernel) - kernel.append_child(param_gaussian_kernel) + root.append_child(param_gaussian_kernel) param_gaussian_kernel_width=ModelSelectionParameters('width') param_gaussian_kernel_width.build_values(1, 2, R_EXP) @@ -58,7 +55,7 @@ def modelselection_parameter_tree_modular(): ds_kernel=DistantSegmentsKernel() param_ds_kernel=ModelSelectionParameters('kernel', ds_kernel) - kernel.append_child(param_ds_kernel) + root.append_child(param_ds_kernel) param_ds_kernel_delta=ModelSelectionParameters('delta') param_ds_kernel_delta.build_values(1, 2, R_EXP) diff --git a/src/shogun/evaluation/CrossValidation.cpp b/src/shogun/evaluation/CrossValidation.cpp index f5a92bf24e9..1306d7a519f 100644 --- a/src/shogun/evaluation/CrossValidation.cpp +++ b/src/shogun/evaluation/CrossValidation.cpp @@ -13,6 +13,7 @@ #include #include #include +#include using namespace shogun; @@ -86,7 +87,7 @@ CrossValidationResult CCrossValidation::evaluate() /* construct evaluation result */ CrossValidationResult result; - result.value=CMath::mean(results, m_num_runs); + result.value=CStatistics::mean(SGVector(results, m_num_runs)); result.has_conf_int=m_conf_int_p!=0; result.conf_int_p=m_conf_int_p; @@ -178,7 +179,7 @@ float64_t CCrossValidation::evaluate_one_run() } /* build arithmetic mean of results */ - float64_t mean=CMath::mean(results, num_subsets); + float64_t mean=CStatistics::mean(SGVector(results, num_subsets)); /* clean up */ delete[] results; diff --git a/src/shogun/modelselection/ModelSelectionParameters.cpp b/src/shogun/modelselection/ModelSelectionParameters.cpp index e3a3df23ad6..a7b526ab1f1 100644 --- a/src/shogun/modelselection/ModelSelectionParameters.cpp +++ b/src/shogun/modelselection/ModelSelectionParameters.cpp @@ -86,10 +86,6 @@ void CModelSelectionParameters::append_child(CModelSelectionParameters* child) } } - /* root nodes may not have sgobject children */ - if (!m_node_name && !has_children() && child->m_sgobject) - SG_ERROR("root node may not have CSGObject children\n"); - m_child_nodes->append_element(child); } @@ -341,52 +337,6 @@ CDynamicObjectArray* CModelSelectionParameters::get_combi } } - - /* case name placeholder node: a node which contains a (parameter) name and - * one (or more) CSGObject nodes which are to be substituted into the - * parameter with the above name. The parameter name is one of the learning - * machine, like "kernel". basically all combinations of all children have to - * be appended to the result and a new root is to be added to all trees - */ - else if (m_node_name && !m_sgobject && !m_values.vector) - { - if (!m_child_nodes->get_num_elements()) - { - SG_ERROR("ModelSelectionParameter node with name but no children or " - "values.\n"); - } - - for (index_t i=0; iget_num_elements(); ++i) - { - /* recursively get all combinations of the current child */ - CModelSelectionParameters* child=m_child_nodes->get_element(i); - CDynamicObjectArray* child_combinations= - child->get_combinations(); - SG_REF(child_combinations); - - SG_UNREF(child); - - /* and process them each */ - for (index_t j=0; jget_num_elements(); ++j) - { - CParameterCombination* current=child_combinations->get_element( - j); - - /* append new root node with the name */ - CParameterCombination* new_root=new CParameterCombination( - m_node_name); - new_root->append_child(current); - child_combinations->set_element(new_root, j); - - SG_UNREF(current); - - /* append them to the result */ - result->append_element(new_root); - } - - SG_UNREF(child_combinations); - } - } else SG_ERROR("Illegal CModelSelectionParameters node type.\n"); diff --git a/src/shogun/modelselection/ModelSelectionParameters.h b/src/shogun/modelselection/ModelSelectionParameters.h index d83cda24b92..b290a5e5438 100644 --- a/src/shogun/modelselection/ModelSelectionParameters.h +++ b/src/shogun/modelselection/ModelSelectionParameters.h @@ -29,11 +29,7 @@ enum ERangeType * structure is organized as a tree with different kinds of nodes, depending on * the values of its member variables of name and CSGObject. * - * -root node: no name and no CSGObject, may have children. Children may not be - * of CSGObject node type (use placeholder node) - * - * -placeholder node: only has a name and children, used to bundle parameters - * that belong to the learning machine directly, like "kernel" + * -root node: no name and no CSGObject, may have children * * -CSGObject node: has name and a CSGObject, may have children which are the * parameters of the CSGObject. CSGObjects are SG_REF'ed/SG_UNREF'ed @@ -45,7 +41,7 @@ enum ERangeType * After a (legal!) tree is constructed with the append_child method, all * possible combinations that are implied by this tree may be extracted with the * get_combinations method. It generates a set of trees (different kind than - * this one) that contain the instanciated parameter combinations. + * this one) that contain the instantiated parameter combinations. */ class CModelSelectionParameters: public CSGObject { @@ -80,9 +76,6 @@ class CModelSelectionParameters: public CSGObject * ERangeType (s. above) of the range, which is used to fill an array with * concrete values. For some range types, a base is required * - * Calling this function transforms a placeholder node (without children) - * into a value node. - * * @param min minimum of desired range. Requires min (); SG_REF(m_child_nodes); - m_parameters->add((char*)m_node_name, "node_name", "name of this node"); m_parameters->add((CSGObject**)m_child_nodes, "child nodes", "children of this node"); } @@ -66,14 +57,11 @@ void CParameterCombination::print_tree(int prefix_num) const prefix[prefix_num]='\0'; /* cases: - * -node with only a name and children * -node with a Parameter instance and a possible children * -root node with children */ - if (m_node_name) - SG_SPRINT("%s\"%s\" ", prefix, m_node_name); - else if (m_param) + if (m_param) { SG_SPRINT("%s", prefix); for (index_t i=0; iget_num_parameters(); ++i) @@ -253,9 +241,6 @@ CParameterCombination* CParameterCombination::copy_tree() const { CParameterCombination* copy=new CParameterCombination(); - /* use name of original */ - copy->m_node_name=m_node_name; - /* but build new Parameter instance */ /* only call add_parameters() argument is non-null */ @@ -285,7 +270,7 @@ void CParameterCombination::apply_to_machine(CMachine* machine) const void CParameterCombination::apply_to_parameter(Parameter* parameter) const { /* case root node or name node */ - if ((!m_node_name && !m_param) || (m_node_name && !m_param)) + if (!m_param) { /* iterate over all children and recursively set parameters from * their values to the current parameter input (its just handed one @@ -298,7 +283,7 @@ void CParameterCombination::apply_to_parameter(Parameter* parameter) const } } /* case parameter node */ - else if (!m_node_name && m_param) + else if (m_param) { /* does this node has sub parameters? */ if (has_children()) diff --git a/src/shogun/modelselection/ParameterCombination.h b/src/shogun/modelselection/ParameterCombination.h index 66b1b3af51b..7b3ad4e7366 100644 --- a/src/shogun/modelselection/ParameterCombination.h +++ b/src/shogun/modelselection/ParameterCombination.h @@ -32,9 +32,6 @@ class Parameter; * -root node: no name and no Parameter instance, every tree has such a node as * root. Has children. * - * -name node: a node with only a name. This is used to bundle parameters that - * are directly of from the learning machine, like "kernel". Has children. - * * -Parameter node: a node with no name and an instance of Parameter, filled * with one or more values. There may be different elements in these Parameter * instances. Parameter nodes may have children with sub-parameters. @@ -58,9 +55,6 @@ friend class CModelSelectionParameters; */ void print_tree(int prefix_num=0) const; - /** constructor for a name node */ - CParameterCombination(const char* name); - /** constructor for a Parameter node */ CParameterCombination(Parameter* param); @@ -141,7 +135,6 @@ friend class CModelSelectionParameters; void init(); private: - const char* m_node_name; Parameter* m_param; CDynamicObjectArray* m_child_nodes; };