from django.db import models # Regression Model class RegressionModel(models.Model): name = models.CharField(max_length=100) description = models.TextField() model_file = models.FileField(upload_to='regression_models/') accuracy = models.FloatField(null=True, blank=True) loss = models.FloatField(null=True, blank=True) r_squared = models.FloatField(null=True, blank=True) # R-squared metric mean_squared_error = models.FloatField(null=True, blank=True) # MSE metric mean_absolute_error = models.FloatField(null=True, blank=True) # MAE metric date_trained = models.DateTimeField(auto_now_add=True) is_active = models.BooleanField(default=True) def __str__(self): return self.name class Meta: verbose_name = "Regression Model" verbose_name_plural = "Regression Models" # Classification Model class ClassificationModel(models.Model): name = models.CharField(max_length=100) description = models.TextField() model_file = models.FileField(upload_to='classification_models/') accuracy = models.FloatField(null=True, blank=True) loss = models.FloatField(null=True, blank=True) precision = models.FloatField(null=True, blank=True) # Precision metric recall = models.FloatField(null=True, blank=True) # Recall metric f1_score = models.FloatField(null=True, blank=True) # F1-score metric auc_roc = models.FloatField(null=True, blank=True) # AUC-ROC metric date_trained = models.DateTimeField(auto_now_add=True) is_active = models.BooleanField(default=True) def __str__(self): return self.name class Meta: verbose_name = "Classification Model" verbose_name_plural = "Classification Models" # NLP Model class NLPModel(models.Model): name = models.CharField(max_length=100) description = models.TextField() model_file = models.FileField(upload_to='nlp_models/') accuracy = models.FloatField(null=True, blank=True) loss = models.FloatField(null=True, blank=True) bleu_score = models.FloatField(null=True, blank=True) # BLEU score for NLP tasks perplexity = models.FloatField(null=True, blank=True) # Perplexity for language models rouge_score = models.FloatField(null=True, blank=True) # ROUGE score for summarization date_trained = models.DateTimeField(auto_now_add=True) is_active = models.BooleanField(default=True) def __str__(self): return self.name class Meta: verbose_name = "NLP Model" verbose_name_plural = "NLP Models" # Unsupervised Model class UnsupervisedModel(models.Model): name = models.CharField(max_length=100) description = models.TextField() model_file = models.FileField(upload_to='unsupervised_models/') silhouette_score = models.FloatField(null=True, blank=True) # Silhouette score for clustering inertia = models.FloatField(null=True, blank=True) # Inertia for k-means clustering date_trained = models.DateTimeField(auto_now_add=True) is_active = models.BooleanField(default=True) def __str__(self): return self.name class Meta: verbose_name = "Unsupervised Model" verbose_name_plural = "Unsupervised Models"