# Segments a hypervolume into multiple separate hypervolumes.

### Description

Performs hierarchical clustering (using the 'single' method described in `fastcluster::hclust`

) on the input hypervolume to determine which sets of points are closest to others, then cuts the resulting tree at a height equal to the characteristic distance between points multiplied by a distance factor. Random points in the input hypervolume corresponding to each distinct cluster are assigned to distinct output hypervolumes.

Because clustering algorithms scale quadratically with the number of input points, this algorithm can run slowly. Therefore by default, the function can thin the input hypervolume to a reduced number of random points before analysis. This causes some loss of resolution but improves runtimes.

### Usage

1 | ```
hypervolume_segment(hv, distancefactor = hv@Dimensionality, npmax=NULL)
``` |

### Arguments

`hv` |
An input |

`distancefactor` |
A numeric value characterizing the distance multiplication factor. Larger values result in fewer distinct output hypervolumes; smaller values result in more. |

`npmax` |
A numeric value describing the maximum number of random points to be retained in the input; passed to |

### Value

A `HypervolumeList`

object.

### See Also

`hypervolume_thin`

### Examples

1 2 3 4 | ```
data(iris)
hv1 <- hypervolume(iris[,1:3],bandwidth=0.1)
hv1_segmented <- hypervolume_segment(hv1, npmax=1000,distancefactor=5)
plot(hv1_segmented)
``` |