from typing import List, Dict import pandas as pd import numpy as np import joblib scaler = joblib.load("scaler.joblib") models = { "processing": joblib.load("svm_model_processing.joblib"), "perception": joblib.load("svm_model_perception.joblib"), "input": joblib.load("svm_model_input.joblib"), "understanding": joblib.load("svm_model_understanding.joblib"), } class Model: def __init__(self): self.scaler = scaler self.models = models def __call__(self, inputs: List[List[float]]) -> List[Dict[str, float]]: feature_names = [ "course overview", "reading file", "abstract materiale", "concrete material", "visual materials", "self-assessment", "exercises submit", "quiz submitted", "playing", "paused", "unstarted", "buffering" ] outputs = [] for features in inputs: input_df = pd.DataFrame([features], columns=feature_names) scaled_input = self.scaler.transform(input_df) predictions = {} for target, model in self.models.items(): predictions[target] = model.predict(scaled_input)[0] outputs.append(predictions) return outputs model = Model()