private void computeCBLOFs ( Relation < O > relation , NumberVectorDistanceFunction < ? super O > distance , WritableDoubleDataStore cblofs , DoubleMinMax cblofMinMax , List < ? extends Cluster < MeanModel > > largeClusters , List < ? extends Cluster < MeanModel > > smallClusters ) { List < NumberVector > largeClusterMeans = new ArrayList <> ( largeClusters . size ( ) ) ; for ( Cluster < MeanModel > largeCluster : largeClusters ) { NumberVector mean = ModelUtil . getPrototypeOrCentroid ( largeCluster . getModel ( ) , relation , largeCluster . getIDs ( ) ) ; largeClusterMeans . add ( mean ) ; // Compute CBLOF scores for members of large clusters for ( DBIDIter iter = largeCluster . getIDs ( ) . iter ( ) ; iter . valid ( ) ; iter . advance ( ) ) { double cblof = computeLargeClusterCBLOF ( relation . get ( iter ) , distance , mean , largeCluster ) ; storeCBLOFScore ( cblofs , cblofMinMax , cblof , iter ) ; } } for ( Cluster < MeanModel > smallCluster : smallClusters ) { for ( DBIDIter iter = smallCluster . getIDs ( ) . iter ( ) ; iter . valid ( ) ; iter . advance ( ) ) { double cblof = computeSmallClusterCBLOF ( relation . get ( iter ) , distance , largeClusterMeans , smallCluster ) ; storeCBLOFScore ( cblofs , cblofMinMax , cblof , iter ) ; } } }
Compute the CBLOF scores for all the data .