TIF_NGANJUK_E41212301/resources/scripts/predict_xgb.py

39 lines
1.1 KiB
Python

import pickle
import numpy as np
import json
import sys
import os
import xgboost as xgb
base_path = os.path.dirname(os.path.abspath(__file__))
parent_path = os.path.abspath(os.path.join(base_path, '..', '..'))
model_path = os.path.join(parent_path, 'storage', 'app', 'models', 'Model_SKLearn_XGB_VARK.pkl')
encoder_path = os.path.join(parent_path, 'storage', 'app', 'models', 'Encoder_Result.pkl')
with open(model_path, 'rb') as f:
model = pickle.load(f)
with open(encoder_path, 'rb') as f:
le_result = pickle.load(f)
input_data = json.loads(sys.argv[1])
visual = input_data['Visual']
auditory = input_data['Auditory']
read_write = input_data['Read/Write']
kinesthetic = input_data['Kinesthetic']
X = np.array([visual, auditory, read_write, kinesthetic]).reshape(1, -1)
feature_names = ['Visual', 'Auditory', 'Read/Write', 'Kinesthetic']
X_dmatrix = xgb.DMatrix(X, feature_names=feature_names)
pred = model.predict(X_dmatrix)
result = le_result.inverse_transform([int(pred[0])])[0]
output = {
'Result': result,
'Visual': visual,
'Auditory': auditory,
'Read/Write': read_write,
'Kinesthetic': kinesthetic
}
print(json.dumps(output))