fifa-2022-rmt-040 / prediction.py
danupurnomo's picture
Initial commit
d3e3cb2 verified
import streamlit as st
import pandas as pd
import numpy as np
import pickle
import json
st.set_page_config(
page_title = 'FIFA 2022',
layout = 'wide',
initial_sidebar_state = 'expanded'
)
with open('model.pkl', 'rb') as file_1: #rb =read binary
model = pickle.load(file_1)
with open('scaler.pkl', 'rb') as file_2:
scaler = pickle.load(file_2)
with open('encoder.pkl', 'rb') as file_3:
encoder = pickle.load(file_3)
with open('num.txt', 'r') as file_4:
num = json.load(file_4)
with open('cat.txt', 'r') as file_5:
cat = json.load(file_5)
def run():
# Membuat Form
with st.form(key='form_fifa_2022_rmt_040'):
name = st.text_input('Name', value='')
age = st.number_input('Age', min_value=16, max_value=52, value=24, step=1, help='Usia Pemain')
weight = st.number_input('Weight', min_value=60, max_value=120, value=68)
height = st.slider('Height', 160, 250, 180)
price = st.number_input('Price', min_value=0, max_value=1000000000, value=0)
st.markdown('---')
attacking_work_rate = st.selectbox('AttackingWorkRate', ('Low', 'Medium', 'High'), index=0)
defensive_work_rate = st.radio('DefensiveWorkRate', ('Low', 'Medium', 'High'), index=1)
st.markdown('---')
pace = st.number_input('Kecepatan Lari', 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 !')
df_inf = {
'Name': name,
'Age': age,
'Height': height,
'Weight': weight,
'ValueEUR': price,
'AttackingWorkRate': attacking_work_rate,
'DefensiveWorkRate': defensive_work_rate,
'PaceTotal': pace,
'ShootingTotal': shooting,
'PassingTotal': passing,
'DribblingTotal': dribbling,
'DefendingTotal': defending,
'PhysicalityTotal': physicality
}
# Convert to Dataframe pandas
df_inf = pd.DataFrame([df_inf])
st.dataframe(df_inf)
df_inf = df_inf.rename(columns= {'ValueEUR':'Price'})
if submitted:
# Define num and cat
df_inf_num = df_inf[num]
df_inf_cat = df_inf[cat]
# Feature scaling and encoding
df_inf_num_scaled = scaler.transform(df_inf_num)
df_inf_cat_encoded = encoder.transform(df_inf_cat)
# Concat
df_inf_final = np.concatenate([df_inf_num_scaled,df_inf_cat_encoded],axis=1)
# Predict the new data
prediction = model.predict(df_inf_final)
st.write('# Rating : ', str(int(prediction)))
if __name__ == '__main__':
run()