File size: 1,280 Bytes
6a970e1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# utils.py (Helper Functions)
import pickle
import os
from pathlib import Path

MODELS = {
    'Support Vector Machine': 'Models/svm_model.pkl',
    'Random Forest': 'Models/rf_model.pkl',
    'K-Nearest Neighbors': 'Models/knn_model.pkl',
    'Naive Bayes': 'Models/clf_NaiveBaised.pkl',
    'Decision Tree': 'Models/DT_model.pkl'
}


def get_available_models():
    """
    Returns a list of available models
    """
    return list(MODELS.keys())


def load_model(model_name):
    """
    Loads the specified model from file.
    """
    if model_name not in MODELS:
        raise ValueError(f"Model {model_name} not found")

    model_file = MODELS[model_name]
    try:
        with open(model_file, "rb") as file:
            model = pickle.load(file)
        return model
    except FileNotFoundError:
        raise FileNotFoundError(f"Model file {model_file} not found")
    except Exception as e:
        raise Exception(f"Error loading model: {str(e)}")


def model_predict(email, model_name):
    """
    Predicts using the specified model.
    """
    try:
        model = load_model(model_name)
        prediction = model.predict([email])
        return 1 if prediction[0] == 1 else -1
    except Exception as e:
        raise Exception(f"Prediction error: {str(e)}")