Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import numpy as np | |
| import pandas as pd | |
| from tensorflow.keras.models import load_model | |
| st.title("Gender Prediction Based on Names: ") | |
| def preprocess(names_df, train=True): | |
| # Step 1: Lowercase | |
| names_df['Name'] = names_df['Name'].str.lower() | |
| # Step 2: Split individual characters | |
| names_df['Name'] = [list(name) for name in names_df['Name']] | |
| # Step 3: Pad names with spaces to make all names same length | |
| name_length = 50 | |
| names_df['Name'] = [ | |
| (name + [' ']*name_length)[:name_length] | |
| for name in names_df['Name'] | |
| ] | |
| # Step 4: Encode Characters to Numbers | |
| names_df['Name'] = [ | |
| [ | |
| max(0.0, ord(char)-96.0) | |
| for char in name | |
| ] | |
| for name in names_df['Name'] | |
| ] | |
| if train: | |
| # Step 5: Encode Gender to Numbers | |
| names_df['Gender'] = [ | |
| 0.0 if gender == 'F' else 1.0 | |
| for gender in names_df['Gender'] | |
| ] | |
| return names_df | |
| #Load the model | |
| pred_model = load_model('boyorgirl_5.h5') | |
| # Input names | |
| names = st.text_input("Enter The Name") | |
| names = names.split(",") | |
| if st.button("Get Gender"): | |
| # Convert to dataframe | |
| pred_df = pd.DataFrame({'Name': names}) | |
| # Preprocess | |
| pred_df = preprocess(pred_df, train=False) | |
| # Predictions | |
| result = pred_model.predict(np.asarray( | |
| pred_df['Name'].values.tolist())).squeeze(axis=1) | |
| pred_df['Predicted Gender'] = [ | |
| 'Boy' if logit > 0.5 else 'Girl' for logit in result | |
| ] | |
| pred_df['Prediction Confidence(%)'] = [ | |
| logit if logit > 0.5 else 1.0 - logit for logit in result | |
| ] | |
| # Format the output | |
| pred_df['Name'] = names | |
| pred_df['Prediction Confidence(%)'] = pred_df['Prediction Confidence(%)'].round(2) * 100 | |
| pred_df.drop_duplicates(inplace=True) | |
| st.header('Predictions: ') | |
| st.table(pred_df) | |