sevvaliclal's picture
Update src/app.py
8f07d0e verified
Raw
History Blame Contribute Delete
975 Bytes
import streamlit as st
import joblib
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
tfidf = joblib.load("src/tfidf_vectorizer.pkl")
df = pd.read_csv("src/metadata.csv")
tfidf_matrix = tfidf.transform(df["combined_features"])
cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix)
indices = pd.Series(df.index, index=df["track_name"]).drop_duplicates()
def recommend(song_name, n=5):
idx = indices[song_name]
idx = idx.iloc[0] if hasattr(idx, "iloc") else idx
sim_scores = list(enumerate(cosine_sim[idx]))
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)[1:n+1]
song_indices = [i[0] for i in sim_scores]
return df.loc[song_indices, ["track_name", "track_artist", "playlist_genre"]]
st.title("🎵 Spotify Recommendation System")
song = st.selectbox("Bir şarkı seçin:", df["track_name"].unique())
if st.button("Öner"):
recommendations = recommend(song)
st.dataframe(recommendations)