Parcurgerea algoritmului K-nearest neighbors
Tocmai ai văzut cum poate fi folosit algoritmul K-nearest neighbors pentru a estima cum ar putea evalua cineva un element, bazându-se pe opinia unui grup de utilizatori similari. În acest exercițiu, vei parcurge acest proces pas cu pas, pentru a înțelege bine cum funcționează.
Ca punct de plecare, deoarece ai generat matrice de similaritate de mai multe ori până acum, acel pas a fost deja realizat pentru tine – matricea de similaritate a utilizatorilor este încărcată ca DataFrame sub numele user_similarities.
Aceasta are fiecare utilizator atât pe rânduri, cât și pe coloane, iar la intersecția lor se află scorul de similaritate corespunzător.
În acest exercițiu, vei lucra cu scorurile de similaritate ale lui user_001, vei identifica cei mai apropiați vecini ai acestuia și, pe baza evaluărilor pe care acești vecini le-au dat unui film, vei estima ce rating ar putea acorda user_001 dacă l-ar viziona.
Acest exercițiu face parte din cursul
Construirea motoarelor de recomandare în Python
Instrucțiuni pentru exercițiu
- Găsește ID-urile celor 10 cei mai apropiați vecini ai lui
User_Aextragând primii 10 utilizatori dinordered_similaritiesși stochează-i canearest_neighbors. - Extrage din
user_ratings_tableratingurile acordate de utilizatorii dinnearest_neighborsși salvează-le caneighbor_ratings. - Calculează ratingul mediu pe care acești utilizatori l-au acordat filmului
Apollo 13 (1995)pentru a estima ce rating i-ar daUser_Adacă l-ar fi vizionat.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Isolate the similarity scores for user_1 and sort
user_similarity_series = user_similarities.loc['user_001']
ordered_similarities = user_similarity_series.sort_values(ascending=False)
# Find the top 10 most similar users
nearest_neighbors = ordered_similarities[1:11].____
# Extract the ratings of the neighbors
neighbor_ratings = user_ratings_table.____(nearest_neighbors)
# Calculate the mean rating given by the users nearest neighbors
print(neighbor_ratings['Apollo 13 (1995)'].____())