IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Public Types | Public Member Functions | Protected Attributes | List of all members
ipsdk::math::clustering::KernelKMeansClustering< KernelType > Class Template Reference
Inheritance diagram for ipsdk::math::clustering::KernelKMeansClustering< KernelType >:

Public Types

typedef KernelKMeansClusteringConfig AlgorithmConfig
 algorithm configuration
 
typedef KernelKMeansCentroid< KernelType > CentroidType
 centroid type associated to object
 
typedef std::vector< CentroidTypeCentroidsColl
 collection of centroids
 

Public Member Functions

const KernelType & getKernel () const
 retrieve kernel associated to object
 
void clear ()
 clear of processing results
 
Constructors and destructor
 KernelKMeansClustering (const KernelType &kernel)
 
 ~KernelKMeansClustering ()
 
const AlgorithmConfiggetConfig () const
 access to algorithm configuration
 
void setConfig (const AlgorithmConfig &config)
 access to algorithm configuration
 
Algorithm computation
bool isClusteringDone () const
 check whether a computation has been done
 
bool compute (const ipUInt32 nbClusters, const VectorColl &inputDataColl)
 proceed to data clustering More...
 
Algorithm results
ipUInt32 getNbClusters () const
 retrieve number of clusters associated to clustering process More...
 
ipUInt32 getDataSize () const
 retrieve data size associated to input data collection More...
 
ipUInt32 getNbInputData () const
 retrieve number of data in input data collection More...
 
const VectorCollgetInputDataColl () const
 retrieve used input data collection More...
 
ipUInt32 getNbFailedAttempts () const
 retrieve number of failed attempts More...
 
ipReal64 getSeparation () const
 get separation associated to clustering result More...
 
ipUInt32 getNbIteration () const
 retrieve number of iterations associated to selected clustering solution More...
 
ipUInt32 getClusterPopulation (const ipUInt32 clusterIdx) const
 retrieve number of data associated to a given cluster More...
 
const CentroidsCollgetClustersCentroids () const
 retrieve centroids associated to clustering operation More...
 
const CentroidTypegetCentroid (const ipUInt32 clusterIdx) const
 retrieve centroid associated to a given cluster More...
 
const UInt32VectorgetAssignments () const
 retrieve cluster index associated to each input data More...
 
ipUInt32 computeAssignment (const Vector &data) const
 function allowing to compute cluster assignment for a given data More...
 

Protected Attributes

KernelType _kernel
 kernel associated to clustering operation
 
AlgorithmConfig _config
 configuration associated to clustering algorithm
 
VectorColl _inputDataColl
 input data collection
 
ipUInt32 _nbFailedAttempts
 number of failed attempts
 
ipUInt32 _nbIteration
 number of iterations associated to selected clustering solution
 
ipReal64 _separation
 separation associated to processing
 
CentroidsColl _clustersCentroids
 cluster centroids associated to processing
 
UInt32Vector _assignments
 cluster index associated to each input data
 

Member Function Documentation

◆ compute()

template<typename KernelType>
bool ipsdk::math::clustering::KernelKMeansClustering< KernelType >::compute ( const ipUInt32  nbClusters,
const VectorColl inputDataColl 
)

proceed to data clustering

getNbAttempts() of K-Means++ algorithm will be used to initialize K-Means algorithm.

For a given attempt, if process reach maximum number of iterations (getConfig().getNbMaxIteration()) before that clusters centers stabilization is reached, current attempt is considered as failed

If none of the getNbAttempts() succeed, algorithm is considered on failure

On output clusters are sorted in decreasing population order

Parameters
nbClustersnumber of searched clusters
inputDataCollcollection of observations
Returns
false if no attempt succeed
Exceptions
ipsdk::math::IPSDKMathExceptionif nbClusters == 0
ipsdk::math::IPSDKMathExceptionif nbClusters > inputDataColl.size()
Warning
there is no check to ensure that inputDataColl[i].size() == inputDataColl[0].size()

◆ getNbClusters()

template<typename KernelType>
ipUInt32 ipsdk::math::clustering::KernelKMeansClustering< KernelType >::getNbClusters ( ) const

retrieve number of clusters associated to clustering process

Exceptions
ipsdk::math::IPSDKMathExceptionif isClusteringDone() == false

◆ getDataSize()

template<typename KernelType>
ipUInt32 ipsdk::math::clustering::KernelKMeansClustering< KernelType >::getDataSize ( ) const

retrieve data size associated to input data collection

Exceptions
ipsdk::math::IPSDKMathExceptionif isClusteringDone() == false

◆ getNbInputData()

template<typename KernelType>
ipUInt32 ipsdk::math::clustering::KernelKMeansClustering< KernelType >::getNbInputData ( ) const

retrieve number of data in input data collection

Exceptions
ipsdk::math::IPSDKMathExceptionif isClusteringDone() == false

◆ getInputDataColl()

template<typename KernelType>
const VectorColl& ipsdk::math::clustering::KernelKMeansClustering< KernelType >::getInputDataColl ( ) const

retrieve used input data collection

Exceptions
ipsdk::math::IPSDKMathExceptionif isClusteringDone() == false

◆ getNbFailedAttempts()

template<typename KernelType>
ipUInt32 ipsdk::math::clustering::KernelKMeansClustering< KernelType >::getNbFailedAttempts ( ) const

retrieve number of failed attempts

Exceptions
ipsdk::math::IPSDKMathExceptionif isClusteringDone() == false

◆ getSeparation()

template<typename KernelType>
ipReal64 ipsdk::math::clustering::KernelKMeansClustering< KernelType >::getSeparation ( ) const

get separation associated to clustering result

separation is defined as the Dunn validity index

Exceptions
ipsdk::math::IPSDKMathExceptionif isClusteringDone() == false

◆ getNbIteration()

template<typename KernelType>
ipUInt32 ipsdk::math::clustering::KernelKMeansClustering< KernelType >::getNbIteration ( ) const

retrieve number of iterations associated to selected clustering solution

Exceptions
ipsdk::math::IPSDKMathExceptionif isClusteringDone() == false

◆ getClusterPopulation()

template<typename KernelType>
ipUInt32 ipsdk::math::clustering::KernelKMeansClustering< KernelType >::getClusterPopulation ( const ipUInt32  clusterIdx) const

retrieve number of data associated to a given cluster

Exceptions
ipsdk::math::IPSDKMathExceptionif clusterIdx >= getNbClusters()

◆ getClustersCentroids()

template<typename KernelType>
const CentroidsColl& ipsdk::math::clustering::KernelKMeansClustering< KernelType >::getClustersCentroids ( ) const

retrieve centroids associated to clustering operation

Exceptions
ipsdk::math::IPSDKMathExceptionif isClusteringDone() == false

◆ getCentroid()

template<typename KernelType>
const CentroidType& ipsdk::math::clustering::KernelKMeansClustering< KernelType >::getCentroid ( const ipUInt32  clusterIdx) const

retrieve centroid associated to a given cluster

Exceptions
ipsdk::math::IPSDKMathExceptionif clusterIdx >= getNbClusters()

◆ getAssignments()

template<typename KernelType>
const UInt32Vector& ipsdk::math::clustering::KernelKMeansClustering< KernelType >::getAssignments ( ) const

retrieve cluster index associated to each input data

Exceptions
ipsdk::math::IPSDKMathExceptionif isClusteringDone() == false

◆ computeAssignment()

template<typename KernelType>
ipUInt32 ipsdk::math::clustering::KernelKMeansClustering< KernelType >::computeAssignment ( const Vector data) const

function allowing to compute cluster assignment for a given data

Exceptions
ipsdk::math::IPSDKMathExceptionif isClusteringDone() == false
Warning
there is no check to ensure that data.size() == getDataSize()

The documentation for this class was generated from the following files: