Bitha commited on
Commit
8a33be1
1 Parent(s): 9a43651

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +99 -0
app.py ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import pandas as pd
3
+ from PIL import Image
4
+ from PIL import ImageFile
5
+ import urllib.request
6
+ from sklearn.metrics import pairwise_distances
7
+ from datetime import datetime
8
+ import streamlit as st
9
+
10
+
11
+ st.set_option('deprecation.showfileUploaderEncoding', False)
12
+
13
+ fashion_df = pd.read_csv("./fashion.csv")
14
+ boys_extracted_features = np.load('./Boys_ResNet_features.npy')
15
+ boys_Productids = np.load('./Boys_ResNet_feature_product_ids.npy')
16
+ girls_extracted_features = np.load('./Girls_ResNet_features.npy')
17
+ girls_Productids = np.load('./Girls_ResNet_feature_product_ids.npy')
18
+ men_extracted_features = np.load('./Men_ResNet_features.npy')
19
+ men_Productids = np.load('./Men_ResNet_feature_product_ids.npy')
20
+ women_extracted_features = np.load('./Women_ResNet_features.npy')
21
+ women_Productids = np.load('./Women_ResNet_feature_product_ids.npy')
22
+ fashion_df["ProductId"] = fashion_df["ProductId"].astype(str)
23
+
24
+ st.image("https://storage.googleapis.com/danacita-website-v3-prd/website_v3/images/biaya_bootcamp__kursus_hacktiv8_6.original.png")
25
+ st.markdown('---')
26
+ st.subheader('FashClass - HCK-14 Final Project')
27
+ st.write('Name :')
28
+ st.write('1. Anjas Fajar Maulana (Data Science)')
29
+ st.write('2. Fazrin Muhammad (Data Analyst)')
30
+ st.write('3. Naufal Andika Ramadhan (Data Engineer)')
31
+ st.write('4. Salsa Sabitha Hurriyah (Data Science)')
32
+
33
+ st.write('---')
34
+ def load_data(file_path):
35
+ return pd.read_csv(file_path)
36
+
37
+ # Path to the CSV file
38
+ file_path = "fashion.csv"
39
+ # Load the data
40
+ data = load_data(file_path)
41
+
42
+ # Display the data using Streamlit
43
+ st.write("### List of Product")
44
+ st.write(data)
45
+
46
+ st.write('---')
47
+ def get_similar_products_cnn(product_id, num_results):
48
+ if(fashion_df[fashion_df['ProductId']==product_id]['Gender'].values[0]=="Boys"):
49
+ extracted_features = boys_extracted_features
50
+ Productids = boys_Productids
51
+ elif(fashion_df[fashion_df['ProductId']==product_id]['Gender'].values[0]=="Girls"):
52
+ extracted_features = girls_extracted_features
53
+ Productids = girls_Productids
54
+ elif(fashion_df[fashion_df['ProductId']==product_id]['Gender'].values[0]=="Men"):
55
+ extracted_features = men_extracted_features
56
+ Productids = men_Productids
57
+ elif(fashion_df[fashion_df['ProductId']==product_id]['Gender'].values[0]=="Women"):
58
+ extracted_features = women_extracted_features
59
+ Productids = women_Productids
60
+ Productids = list(Productids)
61
+ doc_id = Productids.index(product_id)
62
+ pairwise_dist = pairwise_distances(extracted_features, extracted_features[doc_id].reshape(1,-1))
63
+ indices = np.argsort(pairwise_dist.flatten())[0:num_results]
64
+ pdists = np.sort(pairwise_dist.flatten())[0:num_results]
65
+ st.write("""
66
+ #### input item details
67
+ """)
68
+ ip_row = fashion_df[['ImageURL','ProductTitle']].loc[fashion_df['ProductId']==Productids[indices[0]]]
69
+ for indx, row in ip_row.iterrows():
70
+ image = Image.open(urllib.request.urlopen(row['ImageURL']))
71
+ image = image.resize((224,224))
72
+ st.image(image)
73
+ st.write(f"Product Title: {row['ProductTitle']}")
74
+ st.write(f"""
75
+ #### Top {num_results-1} Recommended items
76
+ """)
77
+ for i in range(1,len(indices)):
78
+ rows = fashion_df[['ImageURL','ProductTitle']].loc[fashion_df['ProductId']==Productids[indices[i]]]
79
+ for indx, row in rows.iterrows():
80
+ #image = Image.open(Image(url=row['ImageURL'], width = 224, height = 224,embed=True))
81
+ image = Image.open(urllib.request.urlopen(row['ImageURL']))
82
+ image = image.resize((224,224))
83
+ st.image(image)
84
+ st.write(f"Product Title: {row['ProductTitle']}")
85
+ st.write(f"Euclidean Distance from input image: {pdists[i]}")
86
+
87
+ st.write("""
88
+ ## FashClass Recommendation
89
+ """
90
+ )
91
+
92
+
93
+ user_input1 = st.text_input("Enter the item id")
94
+ user_input2 = st.text_input("Enter number of products to be recommended")
95
+
96
+
97
+ button = st.button('Generate recommendations')
98
+ if button:
99
+ get_similar_products_cnn(str(user_input1), int(user_input2))