-->

Intelligenza Artificiale

A un certo punto non fu più la biologia a dominare il destino dell'uomo, ma il prodotto del suo cervello: la cultura.
Cosicché: "Le uniche leggi della materia sono quelle che la nostra mente deve architettare e le uniche leggi della mente sono architettate per essa dalla materia".
JAMES CLERK MAXWELL

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()