00001 /****************************************************************************************************************/ 00002 /* */ 00003 /* OpenNN: Open Neural Networks Library */ 00004 /* www.opennn.cimne.com */ 00005 /* */ 00006 /* I N S T A N C E S I N F O R M A T I O N C L A S S H E A D E R */ 00007 /* */ 00008 /* Roberto Lopez */ 00009 /* International Center for Numerical Methods in Engineering (CIMNE) */ 00010 /* Technical University of Catalonia (UPC) */ 00011 /* Barcelona, Spain */ 00012 /* E-mail: rlopez@cimne.upc.edu */ 00013 /* */ 00014 /****************************************************************************************************************/ 00015 00016 #ifndef __INSTANCESINFORMATION_H__ 00017 #define __INSTANCESINFORMATION_H__ 00018 00019 // System includes 00020 00021 #include <string> 00022 00023 // OpenNN includes 00024 00025 #include "../utilities/vector.h" 00026 #include "../utilities/matrix.h" 00027 00028 // TinyXml includes 00029 00030 #include "../../parsers/tinyxml/tinyxml.h" 00031 00032 00033 namespace OpenNN 00034 { 00035 00038 00039 class InstancesInformation 00040 { 00041 00042 public: 00043 00044 // DEFAULT CONSTRUCTOR 00045 00046 explicit InstancesInformation(void); 00047 00048 // INSTANCES NUMBER CONSTRUCTOR 00049 00050 explicit InstancesInformation(const unsigned int&); 00051 00052 // XML CONSTRUCTOR 00053 00054 explicit InstancesInformation(TiXmlElement*); 00055 00056 00057 // COPY CONSTRUCTOR 00058 00059 InstancesInformation(const InstancesInformation&); 00060 00061 00062 // DESTRUCTOR 00063 00064 virtual ~InstancesInformation(void); 00065 00066 // ASSIGNMENT OPERATOR 00067 00068 InstancesInformation& operator = (const InstancesInformation&); 00069 00070 // EQUAL TO OPERATOR 00071 00072 bool operator == (const InstancesInformation&) const; 00073 00074 // METHODS 00075 00077 00078 const unsigned int& get_instances_number(void) const 00079 { 00080 return(instances_number); 00081 } 00082 00084 00085 inline unsigned int count_training_instances_number(void) const 00086 { 00087 return(training_indices.size()); 00088 } 00089 00091 00092 inline unsigned int count_generalization_instances_number(void) const 00093 { 00094 return(generalization_indices.size()); 00095 } 00096 00098 00099 inline unsigned int count_testing_instances_number(void) const 00100 { 00101 return(testing_indices.size()); 00102 } 00103 00104 // Instances methods 00105 00106 const Vector<unsigned int>& get_training_indices(void) const; 00107 const Vector<unsigned int>& get_generalization_indices(void) const; 00108 const Vector<unsigned int>& get_testing_indices(void) const; 00109 00110 const bool& get_display(void) const; 00111 00112 // Set methods 00113 00114 void set(void); 00115 void set(const unsigned int&); 00116 void set(TiXmlElement*); 00117 00118 // Data methods 00119 00120 void set_instances_number(const unsigned int&); 00121 00122 // Instances methods 00123 00124 void set_training_indices(const Vector<unsigned int>&); 00125 void set_generalization_indices(const Vector<unsigned int>&); 00126 void set_testing_indices(const Vector<unsigned int>&); 00127 00128 void set_training(void); 00129 void set_generalization(void); 00130 void set_testing(void); 00131 00132 void set_default_instances_indices(void); 00133 00134 void set_display(const bool&); 00135 00136 // Data splitting methods 00137 00138 void split_given_indices(const Vector<unsigned int>&, const Vector<unsigned int>&, const Vector<unsigned int>&); 00139 00140 void split_random_indices(const double&, const double&, const double&); 00141 void split_random_indices(void); 00142 00143 void split_sequential_indices(const double&, const double&, const double&); 00144 void split_sequential_indices(void); 00145 00146 // Serialization methods 00147 00148 std::string to_string(void) const; 00149 00150 TiXmlElement* to_XML(void) const; 00151 void from_XML(TiXmlElement*); 00152 00153 private: 00154 00155 // MEMBERS 00156 00157 unsigned int instances_number; 00158 00160 00161 Vector<unsigned int> training_indices; 00162 00164 00165 Vector<unsigned int> generalization_indices; 00166 00168 00169 Vector<unsigned int> testing_indices; 00170 00172 00173 bool display; 00174 }; 00175 00176 } 00177 00178 #endif 00179 00180 // OpenNN: Open Neural Networks Library. 00181 // Copyright (C) 2005-2012 Roberto Lopez 00182 // 00183 // This library is free software; you can redistribute it and/or 00184 // modify it under the terms of the GNU Lesser General Public 00185 // License as published by the Free Software Foundation; either 00186 // version 2.1 of the License, or any later version. 00187 // 00188 // This library is distributed in the hope that it will be useful, 00189 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00190 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00191 // Lesser General Public License for more details. 00192 00193 // You should have received a copy of the GNU Lesser General Public 00194 // License along with this library; if not, write to the Free Software 00195 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00196