SVClustering.h

Go to the documentation of this file.
00001 #ifndef SVCLUSTERING_H_
00002 #define SVCLUSTERING_H_
00003 
00004 #include <cmath>
00005 #ifdef linux
00006         #include <values.h>
00007 #endif
00008 
00009 #include <iostream>
00010 
00011 #include <boost/config.hpp>
00012 #include <boost/graph/adjacency_matrix.hpp>
00013 #include <boost/graph/graph_utility.hpp>
00014 #include <boost/graph/adjacency_list.hpp>
00015 #include <boost/graph/connected_components.hpp>
00016 
00017 #include <boost/multi_array.hpp>
00018 
00019 #include <algorithm>
00020 #include <utility>
00021 
00022 #include <bits/stl_pair.h>
00023 
00024 #include "ClusteringEngine.h"
00025 #include "OneClassSVM.h"
00026 #include "svm.h"
00027 #include "EuclideanDistance.h"
00028 
00029 namespace damina
00030 {
00031 
00035         using namespace boost;
00036         
00040         typedef adjacency_matrix<undirectedS> UndirectedGraph;
00041         
00098         class SVClustering : public damina::ClusteringEngine
00099         {
00100                 
00101                 private: 
00102                         
00106                         bool clusterizeBSV;
00107 
00111                         long int numberOfClusters;
00112                         
00118                         std::vector<unsigned long int> pointPerCluster;
00119                         
00126                         std::vector<int> originalClasses;
00127                         
00128                         
00133                         double C;
00134 
00135                 
00139                         double sphereRadius;    
00140                         
00145                         double *quadratic;
00146                         
00147                         
00148                         void calculateQuadraticPartOfDistanceFromCenter();
00149 
00150                         
00151                         // the following inline methods are unused in this child
00152                         // their implementation is constrained by some abstract anchestors
00153                         virtual inline void clusterize(DataSet *) {};
00154                         virtual inline void setTestSet(DataSet *) {};
00155                         virtual inline DataSet *getTestSet() {return NULL;};
00156 
00157 
00158                         
00159                 protected:      
00160                 
00168                         double C_estimation;
00169                         
00170                         
00174                         OneClassSVM *trainer;
00175                 
00180                         std::vector<int> labels; 
00181 
00182 
00183 
00188                         EuclideanDistance *eucDist;     
00189 
00190 
00191                         virtual double calculateDistanceFromCenter(struct svm_node *);
00192                         
00193                         virtual void calculateSphereRadius();
00194                         
00195                         
00196                         virtual struct svm_node *pointOnThePath(struct svm_node *, struct svm_node *, double); 
00197                         virtual void separateClusters();
00198                         
00199                                 
00200                         virtual double beta(int);
00201                         virtual double beta(int, bool);
00202                         
00203                         virtual double rho();
00204                         virtual double rho(bool); 
00205                         
00206 
00207                         
00208                         
00209                 public:
00210                                 
00211                         virtual void learn();
00212                         virtual void learn(DataSet *);
00213                         virtual void learn(struct svm_problem *);
00214                         
00215                         virtual void clusterize();
00216                         
00217                         virtual void setTrainingSet(DataSet *);
00218                         virtual DataSet *getTrainingSet();
00219                         
00220                         virtual void setProblem(struct svm_problem *);
00221                         virtual struct svm_problem *getProblem();
00222                         
00223                         virtual struct svm_model *getModel();
00224 
00225                         virtual struct svm_parameter *getParameters();
00226 
00227                         virtual void setSoftConstraint(double);
00228                         virtual double getSoftConstraint();
00229                         
00230                         virtual double getSoftConstraintEstimate();
00231                         
00232                         virtual double initialKernelWidth();
00233                         virtual void setKernelWidth(double);
00234                         virtual double getKernelWidth();
00235 
00236                         virtual void setKernelType(int);
00237                         virtual int getKernelType();
00238                         
00239                         virtual double getSphereRadius();
00240 
00241                         
00242                         virtual void setEuclideanDistance(EuclideanDistance *);
00243 
00244 
00245                         virtual std::vector<int>& getClustersAssignment();
00246                         virtual unsigned long int getNumberOfClusters();
00247                         virtual unsigned long int getNumberOfNonSingletonClusters();
00248                         virtual unsigned long int getNumberOfValidClusters(unsigned long int);
00249                         virtual std::vector<unsigned long int>& getPointPerCluster();
00250                         
00251                         virtual std::vector<int>& getOriginalClasses(int);
00252                         
00253                         virtual void useSpecialClusteringPolicyForBSV();
00254                         virtual void useClassicClusteringPolicyForBSV();
00255                         virtual bool usingSpecialClusteringPolicyForBSV();
00256 
00257                         SVClustering(DataSet *);
00258                         SVClustering(struct svm_problem *);             
00259                         SVClustering(double, DataSet *);
00260                         SVClustering(double, struct svm_problem *);
00261                         SVClustering(double, double, DataSet *);
00262                         SVClustering(double, double, struct svm_problem *);
00263                         
00264                         virtual ~SVClustering();
00265         };
00266 
00267 }
00268 
00269 #endif /*SVCLUSTERING_H_*/

Generated on Mon Sep 24 22:26:49 2007 for SVClustering by  doxygen 1.5.2