|
import joblib |
|
import pandas as pd |
|
import gradio as gr |
|
|
|
|
|
scaler = joblib.load("models/scaler.joblib") |
|
models = { |
|
"processing": joblib.load("models/svm_model_processing.joblib"), |
|
"perception": joblib.load("models/svm_model_perception.joblib"), |
|
"input": joblib.load("models/svm_model_input.joblib"), |
|
"understanding": joblib.load("models/svm_model_understanding.joblib") |
|
} |
|
|
|
def predict(course_overview, reading_file, abstract_materiale, concrete_material, visual_materials, |
|
self_assessment, exercises_submit, quiz_submitted, playing, paused, unstarted, buffering): |
|
try: |
|
input_data = { |
|
"course overview": [course_overview], |
|
"reading file": [reading_file], |
|
"abstract materiale": [abstract_materiale], |
|
"concrete material": [concrete_material], |
|
"visual materials": [visual_materials], |
|
"self-assessment": [self_assessment], |
|
"exercises submit": [exercises_submit], |
|
"quiz submitted": [quiz_submitted], |
|
"playing": [playing], |
|
"paused": [paused], |
|
"unstarted": [unstarted], |
|
"buffering": [buffering] |
|
} |
|
|
|
input_df = pd.DataFrame(input_data) |
|
input_scaled = scaler.transform(input_df) |
|
|
|
predictions = {} |
|
for target, model in models.items(): |
|
pred = model.predict(input_scaled) |
|
predictions[target] = pred[0] |
|
|
|
return predictions |
|
|
|
except Exception as e: |
|
return {"error": str(e)} |
|
|
|
|
|
iface = gr.Interface( |
|
fn=predict, |
|
inputs=[ |
|
gr.Number(label="Course Overview"), |
|
gr.Number(label="Reading File"), |
|
gr.Number(label="Abstract Materiale"), |
|
gr.Number(label="Concrete Material"), |
|
gr.Number(label="Visual Materials"), |
|
gr.Number(label="Self Assessment"), |
|
gr.Number(label="Exercises Submit"), |
|
gr.Number(label="Quiz Submitted"), |
|
gr.Number(label="Playing"), |
|
gr.Number(label="Paused"), |
|
gr.Number(label="Unstarted"), |
|
gr.Number(label="Buffering") |
|
], |
|
outputs=gr.JSON(), |
|
title="SVM Multi-Target Prediction", |
|
description="Enter the feature values to get predictions for processing, perception, input, and understanding." |
|
) |
|
|
|
if __name__ == "__main__": |
|
iface.launch() |
|
|