diff --git a/clustering/fonctions_clustering.py b/clustering/fonctions_clustering.py
new file mode 100644
index 0000000000000000000000000000000000000000..f5ba7f05c5f72b07890f7d9099ff8b8caea24ba9
--- /dev/null
+++ b/clustering/fonctions_clustering.py
@@ -0,0 +1,29 @@
+def agglomerative_clustering(reduced_embeddings, cluster_range=range(2, 21)):
+    """
+    Teste l'Agglomerative Clustering avec différents nombres de clusters.
+    
+    :param reduced_embeddings: Matrice des embeddings réduits
+    :param cluster_range: Intervalle du nombre de clusters à tester
+    :return: Liste des labels prédits
+    """
+    clustering_results = {}
+    for n_clusters in cluster_range:
+        agg_clustering = AgglomerativeClustering(n_clusters=n_clusters)
+        agg_labels = agg_clustering.fit_predict(reduced_embeddings)
+        clustering_results[n_clusters] = agg_labels
+    return clustering_results
+
+def gaussian_mixture(reduced_embeddings, cluster_range=range(2, 21)):
+    """
+    Teste le modèle de mélange gaussien (GMM) avec différents nombres de clusters.
+    
+    :param reduced_embeddings: Matrice des embeddings réduits
+    :param cluster_range: Intervalle du nombre de clusters à tester
+    :return: Liste des labels prédits
+    """
+    clustering_results = {}
+    for n_clusters in cluster_range:
+        gmm = GaussianMixture(n_components=n_clusters, random_state=42)
+        gmm_labels = gmm.fit_predict(reduced_embeddings)
+        clustering_results[n_clusters] = gmm_labels
+    return clustering_results