Machine learning

Clustering Gerarchico

Una tecnica che cerca di costruire una gerarchia di cluster.

Cos'è il Clustering Gerarchico


Il clustering gerarchico è una tecnica di clustering che cerca di costruire una gerarchia di cluster.
A differenza di altri algoritmi di clustering, il clustering gerarchico non richiede che venga specificato il numero di cluster in anticipo. Esistono due approcci principali al clustering gerarchico: 1. Aglomerativo (Bottom-Up): Inizia trattando ogni punto come un singolo cluster e poi successivamente unisce i cluster più simili fino a formare un unico cluster che contiene tutti i punti.
2. Divisivo (Top-Down): Inizia con un unico cluster contenente tutti i punti e successivamente divide i cluster più grandi fino a quando ogni punto è in un singolo cluster.

L'algoritmo agglomerativo è il più comune e sarà l'oggetto del nostro esempio.

Esempio di Clustering Gerarchico Agglomerativo con Python

Utilizzeremo il dataset generato con `make_blobs` e applicheremo l'algoritmo di clustering agglomerativo.
Visualizzeremo i risultati con un grafico.

Generazione del Dataset


import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs

# Generazione del dataset
X, y = make_blobs(n_samples=330, centers=5, cluster_std=0.8, random_state=42)

# Visualizzazione del dataset
plt.figure(figsize=(8, 6))
plt.scatter(X[:, 0], X[:, 1], s=50, cmap='viridis')
plt.title('Dataset generato')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

Applicazione del Clustering Gerarchico Agglomerativo



from sklearn.cluster import AgglomerativeClustering

# Applicazione del clustering agglomerativo
agg_clustering = AgglomerativeClustering(n_clusters=5)
clusters = agg_clustering.fit_predict(X)

Visualizzazione dei Cluster


# Visualizzazione dei cluster
plt.figure(figsize=(8, 6))
plt.scatter(X[:, 0], X[:, 1], c=clusters, s=50, cmap='viridis')
plt.title('Clustering Agglomerativo')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

Livio Bollini
Walter Livio Bollini

Matematico & Informatico · Intelligenza Artificiale · Sviluppo Web