ashish-001's picture
Update app.py
7d7ef65 verified
import streamlit as st
import pandas as pd
import numpy as np
from itertools import cycle
pt_table = pd.read_pickle('user book data.pkl')
book_details = pd.read_pickle('book details.pkl')
with open('similarity score.npy', 'rb') as f:
similarity_score = np.load(f)
book_names = pt_table.index.values.tolist()
def recommend(book_name):
book_index = np.where(pt_table.index == book_name)[0][0]
distances = similarity_score[book_index]
similar_items = sorted(list(enumerate(distances)),
key=lambda x: x[1], reverse=True)[1:7]
suggestion = []
for i in similar_items:
suggestion.append(pt_table.index[i[0]])
return suggestion
st.set_page_config(page_title="Book recommender system")
st.title("Book recommender system")
option = st.selectbox("Enter or select a book name", book_names, index=0)
if st.button("Recommend"):
recommendation = recommend(option)
cols = cycle(st.columns(3))
for recom in recommendation:
next(cols).image(book_details[book_details['Book-Title'] == recom]['Image-URL-M'].values[0],
f"{book_details[book_details['Book-Title']==recom]['Book-Title'].values[0]} by {book_details[book_details['Book-Title']==recom]['Book-Author'].values[0]}", width=150)