Spaces:
Runtime error
Runtime error
import streamlit as st | |
import pandas as pd | |
import numpy as np | |
import pickle | |
import json | |
with open('model_lin_reg.pkl', 'rb') as file_1: | |
model_lin_reg = pickle.load(file_1) | |
with open('model_scaler.pkl', 'rb') as file_2: | |
model_scaler = pickle.load(file_2) | |
with open('model_encoder.pkl','rb') as file_3: | |
model_encoder = pickle.load(file_3) | |
with open('list_num_cols.txt', 'r') as file_4: | |
list_num_cols = json.load(file_4) | |
with open('list_cat_cols.txt', 'r') as file_5: | |
list_cat_cols = json.load(file_5) | |
def run(): | |
st.title("FIFA Player Rating Prediction") | |
with st.form("form_fifa"): | |
name = st.text_input("Name", value="") | |
age = st.number_input("Age", min_value=16, max_value=60, value=25, step=1, help="Usia Pemain") | |
weight = st.number_input("Weight", min_value=50, max_value=150, value=75) | |
height = st.slider("Height", 140, 250, 170) | |
price = st.number_input("Price", min_value=0, max_value=1000000000, value=0) | |
st.markdown("---") | |
attackingWorkRate = st.selectbox("AttackingWorkRate", ("Low", "Medium", "High"), index=1) | |
defensiveWorkRate = st.selectbox("DefensiveWorkRate", ("Low", "Medium", "High"), index=1) | |
st.markdown("---") | |
pace = st.number_input("Pace", min_value=0, max_value=100, value=50) | |
shooting = st.number_input("Shooting", min_value=0, max_value=100, value=50) | |
passing = st.number_input("Passing", min_value=0, max_value=100, value=50) | |
dribbling = st.number_input("Dribbling", min_value=0, max_value=100, value=50) | |
defending = st.number_input("Defending", min_value=0, max_value=100, value=50) | |
physicality = st.number_input("Physicality", min_value=0, max_value=100, value=50) | |
submitted = st.form_submit_button("Predict") | |
dataInference = { | |
"Name": name, | |
"Age": age, | |
"Height": height, | |
"Weight": weight, | |
"Price": price, | |
"AttackingWorkRate": attackingWorkRate, | |
"DefensiveWorkRate": defensiveWorkRate, | |
"PaceTotal": pace, | |
"ShootingTotal": shooting, | |
"PassingTotal": passing, | |
"DribblingTotal": dribbling, | |
"DefendingTotal": defending, | |
"PhysicalityTotal": physicality | |
} | |
dfInference = pd.DataFrame([dataInference]) | |
st.dataframe(dfInference) | |
if submitted: | |
#Split between Numerical and Categorical Columns | |
data_inf_num = dfInference[list_num_cols] | |
data_inf_cat = dfInference[list_cat_cols] | |
#Feature Preprocessing (Scaling and Encoding) | |
data_inf_num_scaled = model_scaler.transform(data_inf_num) | |
data_inf_cat_encoded = model_encoder.transform(data_inf_cat) | |
data_inf_final = np.concatenate([data_inf_num_scaled, data_inf_cat_encoded], axis=1) | |
#Prediction | |
y_pred_inf = model_lin_reg.predict(data_inf_final) | |
st.write("## Rating: ", str(int(y_pred_inf))) | |
if __name__ == "__main__": | |
run() | |