| import numpy as np |
| import torch |
| import joblib |
| from model.model import VOIPClassifier, get_top_features |
|
|
| scaler = joblib.load("scaler.pkl") |
|
|
| def load_model(model_path, input_dim): |
| model = VOIPClassifier(input_dim) |
| model.load_state_dict(torch.load(model_path, map_location=torch.device('cpu'))) |
| model.eval() |
| return model |
|
|
| def predict(model, input_list, scaler): |
| input_array = np.array(input_list).reshape(1, -1) |
| input_scaled = scaler.transform(input_array) |
| input_tensor = torch.FloatTensor(input_scaled) |
| with torch.no_grad(): |
| output = model(input_tensor) |
| probability = output.item() |
| predicted_class = 1 if probability >= 0.5 else 0 |
| return {"probability": probability, "class": predicted_class} |
|
|
| def inference(input): |
| top_features = get_top_features() |
| model = load_model("VOIP_Classifier.pth", input_dim=len(top_features)) |
| result = predict(model, input, scaler) |
| return result |
|
|
| if __name__ == "__main__": |
| top_features = get_top_features() |
| model = load_model("VOIP_Classifier.pth", input_dim=len(top_features)) |
| sample_input = [2, 4, 5] |
| print(inference(sample_input)) |
|
|