Team Ai
Apppublic

Deepvest/ProfilingAI

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
data_generator.py62 linesDownload Raw Back to core
1import pandas as pd2import numpy as np3from transformers import AutoTokenizer, AutoModelForCausalLM4 5class ProfileGenerator:6   def __init__(self):7       # Charger Open R1 pour la partie profiling8       self.tokenizer = AutoTokenizer.from_pretrained("open-r1")9       self.model = AutoModelForCausalLM.from_pretrained("open-r1")10       11       # Configuration des profils12       self.risk_levels = ["Prudent", "Modéré", "Dynamique"] 13       self.goals = ["Retraite", "Immobilier", "Études", "Épargne"]14 15   def generate_profile_data(self, num_samples=1000):16       data = []17       for _ in range(num_samples):18           # Générer profil de base19           profile = {20               "age": np.random.randint(18, 70),21               "income": np.random.randint(2000, 20000),22               "savings": np.random.randint(500, 5000),23               "goals": np.random.choice(self.goals, size=2, replace=False),24               "risk_tolerance": np.random.choice(self.risk_levels)25           }26           27           # Générer description avec Open R128           profile["description"] = self._generate_profile_description(profile)29           30           data.append(profile)31           32       return pd.DataFrame(data)33 34   def _generate_profile_description(self, profile):35       # Préparation du prompt pour Open R136       prompt = f"""37       Profil investisseur :38       - Age: {profile['age']} ans39       - Revenu: {profile['income']}€/mois 40       - Épargne: {profile['savings']}€/mois41       - Objectifs: {', '.join(profile['goals'])}42       - Tolérance au risque: {profile['risk_tolerance']}43 44       Décrivez ce profil d'investisseur et suggérez une approche personnalisée.45       """46       47       # Générer la description avec Open R148       inputs = self.tokenizer(prompt, return_tensors="pt")49       outputs = self.model.generate(**inputs, max_length=200)50       return self.tokenizer.decode(outputs[0])51 52def main():53   # Générer données54   generator = ProfileGenerator()55   df = generator.generate_profile_data()56   57   # Sauvegarder58   df.to_csv("src/data/investment_profiles.csv", index=False)59   print("Données générées et sauvegardées")60 61if __name__ == "__main__":62   main()