From 026c30e27f394c4eae2b4559a2ec0b9f36b8fed8 Mon Sep 17 00:00:00 2001
From: MAFTOUH Mohammed Amine <mohammed-amine.maftouh@imt-atlantique.net>
Date: Mon, 3 Mar 2025 12:11:15 +0000
Subject: [PATCH] creation de reduction_dimension

---
 utils/reduction_dimesion.py | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
 create mode 100644 utils/reduction_dimesion.py

diff --git a/utils/reduction_dimesion.py b/utils/reduction_dimesion.py
new file mode 100644
index 0000000..a7294f9
--- /dev/null
+++ b/utils/reduction_dimesion.py
@@ -0,0 +1,26 @@
+import numpy as np
+import umap.umap_ as umap
+import ast
+
+def reduce_embeddings(df, n_components=50, random_state=42):
+    """
+    Réduit la dimension des embeddings en utilisant UMAP.
+
+    :param df: DataFrame contenant une colonne 'embedding_new' avec les embeddings
+    :param n_components: Nombre de dimensions pour la réduction (par défaut 50)
+    :param random_state: Seed pour la reproductibilité (par défaut 42)
+    :return: Matrice des embeddings réduits (reduced_embeddings)
+    """
+    # Convertir les embeddings en format numpy si nécessaire
+    df['embedding_new'] = df['embedding_new'].apply(
+        lambda x: ast.literal_eval(x) if isinstance(x, str) else x
+    )
+    
+    # Créer une matrice numpy à partir des embeddings
+    embeddings_matrix = np.stack(df['embedding_new'].values)
+    
+    # Appliquer UMAP pour réduire la dimension
+    umap_model = umap.UMAP(n_components=n_components, random_state=random_state)
+    reduced_embeddings = umap_model.fit_transform(embeddings_matrix)
+    
+    return reduced_embeddings
\ No newline at end of file
-- 
GitLab