Spaces:
Running
Running
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() |