<a id="cluster"></a>

<a id="hierarchical-clustering"></a>

<a id="clustering-estimators"></a>

# Clustering Estimators

The `skfolio.cluster` module complements `sklearn.cluster` with additional clustering
estimators including the [`HierarchicalClustering`](https://skfolio.org/generated/skfolio.cluster.HierarchicalClustering.html.md#skfolio.cluster.HierarchicalClustering) that forms hierarchical
clusters from a distance matrix. It is used in the following portfolio optimizations:

> * [`HierarchicalRiskParity`](https://skfolio.org/generated/skfolio.optimization.HierarchicalRiskParity.html.md#skfolio.optimization.HierarchicalRiskParity)
> * [`HierarchicalEqualRiskContribution`](https://skfolio.org/generated/skfolio.optimization.HierarchicalEqualRiskContribution.html.md#skfolio.optimization.HierarchicalEqualRiskContribution)
> * [`NestedClustersOptimization`](https://skfolio.org/generated/skfolio.optimization.NestedClustersOptimization.html.md#skfolio.optimization.NestedClustersOptimization)

**Example:**

```python
from skfolio.cluster import HierarchicalClustering
from skfolio.datasets import load_sp500_dataset
from skfolio.distance import PearsonDistance
from skfolio.preprocessing import prices_to_returns

prices = load_sp500_dataset()
X = prices_to_returns(prices)

distance_estimator = PearsonDistance()
distance_estimator.fit(X)
distance = distance_estimator.distance_

model = HierarchicalClustering()
model.fit(distance)
print(model.linkage_matrix_)
```
