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"