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