awacke1's picture
Update app.py
a7d760c
import streamlit as st
import pandas as pd
import numpy as np
import tensorflow as tf
import json
import os
# Dummy TensorFlow model for demonstration purposes
def create_model():
model = tf.keras.Sequential([
tf.keras.layers.Dense(8, activation='relu', input_shape=(4,)),
tf.keras.layers.Dense(4, activation='relu'),
tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
return model
model = create_model()
# Function to get user preferences
def get_user_preferences():
st.sidebar.write("## User Preferences")
username = st.sidebar.text_input("Username", value="Default")
if "username" not in st.session_state:
st.session_state.username = username
st.session_state.age = st.sidebar.number_input("Age", min_value=0, max_value=120, value=st.session_state.get("age", 30))
st.session_state.gender = st.sidebar.selectbox("Gender", options=["Male", "Female", "Other"], index=["Male", "Female", "Other"].index(st.session_state.get("gender", "Male")))
st.session_state.hobbies = st.sidebar.multiselect("Hobbies", options=["Sports", "Reading", "Travel", "Cooking", "Gaming"], default=st.session_state.get("hobbies", []))
st.session_state.occupation = st.sidebar.selectbox("Occupation", options=["Student", "Employed", "Unemployed", "Retired"], index=["Student", "Employed", "Unemployed", "Retired"].index(st.session_state.get("occupation", "Student")))
preferences = {
"username": username,
"age": st.session_state.age,
"gender": st.session_state.gender,
"hobbies": st.session_state.hobbies,
"occupation": st.session_state.occupation
}
return preferences
# Function to preprocess user preferences for TensorFlow model
def preprocess_user_preferences(preferences):
# Preprocess the user data as needed for your specific model
user_data = np.array([preferences['age'], len(preferences['hobbies']), int(preferences['gender'] == "Male"), int(preferences['occupation'] == "Employed")])
return user_data.reshape(1, -1)
# Function to save user preferences to a text file
def save_user_preferences(preferences):
file_path = f"{preferences['username']}.txt"
with open(file_path, 'w') as outfile:
json.dump(preferences, outfile)
# Function to load user preferences from a text file
def load_user_preferences(username):
file_path = f"{username}.txt"
if os.path.exists(file_path):
with open(file_path, 'r') as infile:
preferences = json.load(infile)
return preferences
return None
def main():
st.title("AI-driven Personalized Experience")
preferences = get_user_preferences()
# Load button
if st.sidebar.button("Load"):
loaded_preferences = load_user_preferences(preferences["username"])
if loaded_preferences:
preferences.update(loaded_preferences)
for key, value in loaded_preferences.items():
st.session_state[key] = value
st.write("## User Preferences")
st.write(preferences)
user_data = preprocess_user_preferences(preferences)
prediction = model.predict(user_data)
st.write("## AI-driven Personalized Content")
st.markdown("### Recommendation Score")
st.write(f"{prediction[0][0] * 100:.2f}%")
st.markdown("### Recommended Activities")
activities = pd.DataFrame([
{"Activity": "Outdoor Adventure", "Score": np.random.rand()},
{"Activity": "Book Club", "Score": np.random.rand()},
{"Activity": "Cooking Class", "Score": np.random.rand()},
{"Activity": "Gaming Tournament", "Score": np.random.rand()}
])
# Sort activities by score in descending order and take the top 10
activities = activities.sort_values(by="Score", ascending=False).head(10)
activities["Score"] = activities["Score"].apply(lambda x: f"{x * 100:.2f}%")
st.table(activities)
# Save button
if st.sidebar.button("Save"):
save_user_preferences(preferences)
if __name__ == "__main__":
main()