Effectuer un Regroupement Hiérarchique
Tâche
Swipe to start coding
Votre tâche consiste à utiliser différents types de liaison et à examiner la performance du clustering agglomératif sur les ensembles de données de lunes et de cercles. Vous devez :
- Importer la classe
AgglomerativeClustering
du module sklearn.cluster. - Ajouter un paramètre nommé
linkage
comme entrée de la fonction. - Ajouter la méthode
.fit()
de l'objetagglomerative
pour entraîner le modèle. - Utiliser
'single'
,'complete'
, et'average'
comme paramètres de la fonction (les paramètres dans le code doivent être utilisés dans le même ordre).
Solution
99
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from sklearn.datasets import make_moons, make_circles
import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import AgglomerativeClustering
def check_linkage_parameter(X, y, ds_name, linkage):
agglomerative = AgglomerativeClustering(linkage=linkage,
distance_threshold=0.5, n_clusters=None)
agglomerative.fit(X)
fig, axes = plt.subplots(1, 2)
fig.suptitle(ds_name+' dataset: '+ str(linkage)+' linkage')
axes[0].scatter(X[:, 0], X[:, 1], c=y, cmap='tab20b')
axes[0].set_title('Real clusters')
axes[1].scatter(X[:, 0], X[:, 1], c=agglomerative.labels_, cmap='tab20b')
axes[1].set_title('Clusters with Agglomerative')
X, y = make_moons(n_samples=500)
check_linkage_parameter(X, y, 'Moons', linkage='single')
check_linkage_parameter(X, y, 'Moons', linkage='complete')
check_linkage_parameter(X, y, 'Moons', linkage='average')
X, y = make_circles(n_samples=500)
check_linkage_parameter(X, y, 'Circles', linkage='single')
check_linkage_parameter(X, y, 'Circles', linkage='complete')
check_linkage_parameter(X, y, 'Circles', linkage='average')
Tout était clair ?
Merci pour vos commentaires !
Section 2. Chapitre 4
single
99
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from sklearn.datasets import make_moons, make_circles
import matplotlib.pyplot as plt
import numpy as np
from sklearn.___ import ___
# this function will train agglomerative model with different linakges and plot the results
def check_linkage_parameter(X, y, ds_name, ___):
agglomerative = AgglomerativeClustering(linkage=linkage,
distance_threshold=0.5, n_clusters=None)
agglomerative.___(X)
fig, axes = plt.subplots(1, 2)
fig.suptitle(ds_name+' Dataset: '+str(linkage)+' linkage')
axes[0].scatter(X[:, 0], X[:,1 ], c=y, cmap='tab20b')
axes[0].set_title('Real clusters')
axes[1].scatter(X[:, 0], X[:, 1], c=agglomerative.labels_, cmap='tab20b')
axes[1].set_title('Clusters with Agglomerative')
# Check clustering quality on moons dataset
X, y = make_moons(n_samples=500)
check_linkage_parameter(X, y, 'Moons', linkage=___)
check_linkage_parameter(X, y, 'Moons', linkage=___)
check_linkage_parameter(X, y, 'Moons', linkage=___)
# Check clustering quality on circles dataset
X, y = make_circles(n_samples=500)
check_linkage_parameter(X, y, 'Circles', linkage='single')
check_linkage_parameter(X, y, 'Circles', linkage='complete')
check_linkage_parameter(X, y, 'Circles', linkage='average')
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion