Spaces:
Runtime error
Runtime error
Upload 9 files
Browse files- app.py +49 -0
- course_list.pkl +3 -0
- courses.pkl +3 -0
- image2.png +0 -0
- image3.png +0 -0
- images.png +0 -0
- pages/recommend.py +74 -0
- requirements.txt +1 -0
- similarity.pkl +3 -0
app.py
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from streamlit_extras.switch_page_button import switch_page
|
3 |
+
from streamlit_extras.let_it_rain import rain
|
4 |
+
from PIL import Image
|
5 |
+
|
6 |
+
|
7 |
+
|
8 |
+
st.set_page_config(page_title="CRS",page_icon = "🫰")
|
9 |
+
|
10 |
+
|
11 |
+
|
12 |
+
|
13 |
+
|
14 |
+
st.markdown("<h1 style='text-align: Left ; color: white;'> COURSE RECOMMENDATION SYSTEM </h1>", unsafe_allow_html=True)
|
15 |
+
st.markdown("<h4 style='text-align: center ; color: violet;'> Discover a plethora of courses at your fingertips!</h4>", unsafe_allow_html=True)
|
16 |
+
|
17 |
+
|
18 |
+
#To load image
|
19 |
+
img = Image.open(r'C:\Users\Yuva\.vscode\Streamlit dev\images.png')
|
20 |
+
image_bytes = img.resize((700,400))
|
21 |
+
|
22 |
+
|
23 |
+
co_1, co_2, co_3 = st.columns(3)
|
24 |
+
with co_1:
|
25 |
+
st.image(image_bytes, use_column_width=False)
|
26 |
+
|
27 |
+
|
28 |
+
|
29 |
+
|
30 |
+
# Raining Emoji
|
31 |
+
|
32 |
+
rain(
|
33 |
+
emoji="🕮",
|
34 |
+
font_size=50, # the size of emoji
|
35 |
+
falling_speed=3, # speed of raining
|
36 |
+
animation_length="infinite", # for how much time the animation will happen
|
37 |
+
)
|
38 |
+
|
39 |
+
|
40 |
+
#sc = st.sidebar.columns(2)
|
41 |
+
#sc[0].image(r'C:\Users\Yuva\.vscode\Streamlit dev\images.png', width=150)
|
42 |
+
#sc[1].write(" ")
|
43 |
+
|
44 |
+
|
45 |
+
|
46 |
+
st.subheader(":blue[Discover your perfect course - click here to explore! :point_down:]")
|
47 |
+
want_to_contribute = st.button("click here")
|
48 |
+
if want_to_contribute:
|
49 |
+
switch_page("recommend")
|
course_list.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:cd0eda18efee611fec1c91f6e47b792c5c57ef885f82bdc67c0bd556989a76ff
|
3 |
+
size 7164481
|
courses.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:e3535b7b79e169b19e051f54bd7384bdec4ad4366d95e6b03b4cb2f477bb4616
|
3 |
+
size 7090898
|
image2.png
ADDED
![]() |
image3.png
ADDED
![]() |
images.png
ADDED
![]() |
pages/recommend.py
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
import pickle
|
3 |
+
import streamlit as st
|
4 |
+
from streamlit_extras.let_it_rain import rain
|
5 |
+
|
6 |
+
import numpy as np
|
7 |
+
import pandas as pd
|
8 |
+
|
9 |
+
|
10 |
+
|
11 |
+
# <==== Code starts here ====>
|
12 |
+
|
13 |
+
courses_list = pickle.load(open('courses.pkl','rb'))
|
14 |
+
similarity = pickle.load(open('similarity.pkl','rb'))
|
15 |
+
|
16 |
+
rain(
|
17 |
+
emoji="🕮",
|
18 |
+
font_size=30, # the size of emoji
|
19 |
+
falling_speed=6, # speed of raining
|
20 |
+
animation_length= 2, # for how much time the animation will happen
|
21 |
+
)
|
22 |
+
|
23 |
+
def recommend(course):
|
24 |
+
index = courses_list[courses_list['course_name'] == course].index[0]
|
25 |
+
dist1 = (similarity[index])
|
26 |
+
distances = sorted(list(enumerate(dist1)), reverse=True, key=lambda x: x[1])
|
27 |
+
dist = pd.DataFrame(dist1)
|
28 |
+
|
29 |
+
for i in distances[1:5]:
|
30 |
+
st.write("Name of the Course :memo: : ", courses_list.iloc[i[0]].course_name.upper())
|
31 |
+
st.write("Course URL :link: : ", courses_list.iloc[i[0]].course_url)
|
32 |
+
st.write("Platform :medal: : ", courses_list.iloc[i[0]].Platform.upper())
|
33 |
+
#st.write("Score :large_blue_diamond: : ", dist.iloc[i[0]].to_string(index = False))
|
34 |
+
st.write ("Reason for Recommendation (SKILLS YOU MAY GET) : ")
|
35 |
+
st.write(courses_list.iloc[i[0]].Skills)
|
36 |
+
st.write("-"* 90)
|
37 |
+
|
38 |
+
|
39 |
+
|
40 |
+
def main():
|
41 |
+
|
42 |
+
# To write title
|
43 |
+
|
44 |
+
st.markdown("<h5 style = 'text-align: Left; color: white;'>Hello! I'm here to help you find the perfect course over 5000 courses from dataset. Let's get Started !🙂</h5>",unsafe_allow_html=True)
|
45 |
+
st.markdown("<h5 style='text-align: Left ; color: blue;'> What field or topic are you interested in? </h5>", unsafe_allow_html=True)
|
46 |
+
|
47 |
+
course_list = courses_list['course_name'].values
|
48 |
+
selected_course = st.selectbox("Select here :point_down:",
|
49 |
+
|
50 |
+
courses_list
|
51 |
+
)
|
52 |
+
|
53 |
+
if st.button(' Recommend '):
|
54 |
+
st.success("Recommending courses similar to " + selected_course)
|
55 |
+
recommend(selected_course)
|
56 |
+
|
57 |
+
|
58 |
+
if __name__ == "__main__":
|
59 |
+
main()
|
60 |
+
|
61 |
+
|
62 |
+
|
63 |
+
|
64 |
+
|
65 |
+
|
66 |
+
|
67 |
+
|
68 |
+
|
69 |
+
|
70 |
+
|
71 |
+
|
72 |
+
|
73 |
+
|
74 |
+
|
requirements.txt
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
streamlit_extras
|
similarity.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:289d215dc8e9c437360bcbbebaf2484e589cecc91f95044f12ce5d24fd3b9aba
|
3 |
+
size 141658275
|