File size: 1,571 Bytes
32e93f1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import streamlit as st
import os
import pandas as pd
from tensorflow.keras.models import load_model
from joblib import load

# Set Streamlit page configuration
st.set_page_config(page_title="Gender Prediction", page_icon="๐Ÿง‘โ€๐ŸŽ“", layout="centered")

# Load the pre-trained model
@st.cache_resource
def load_prediction_model():
    return load_model('gender_prediction_model.h5')

# Load the TF-IDF vectorizer
@st.cache_resource
def load_vectorizer():
    tfidf_vectorizer_file = 'tfidf_vectorizer.joblib'
    if not os.path.exists(tfidf_vectorizer_file):
        st.error(f"โŒ {tfidf_vectorizer_file} not found. Please ensure the file exists in the current directory.")
        st.stop()
    return load(tfidf_vectorizer_file)

# Prediction function
def predict_gender(name, model, tfidf):
    vectorized_name = tfidf.transform([name]).toarray()  # Transform name into feature vector
    gender = model.predict(vectorized_name) > 0.5  # Get prediction
    return 'Male' if gender[0][0] == 1 else 'Female'

# Load model and vectorizer
model = load_prediction_model()
tfidf = load_vectorizer()

# Streamlit UI
st.title("Gender Prediction from Name")
st.write("Enter a name to predict the gender using the pre-trained model.")

# Input form
name = st.text_input("Enter a name:")
if st.button("Predict"):
    if name:
        predicted_gender = predict_gender(name, model, tfidf)
        st.success(f"The predicted gender for '{name}' is: **{predicted_gender}**")
    else:
        st.warning("Please enter a valid name.")