推薦系統是Python中的一個工具,它根據使用者的偏好和過去的行為向使用者推薦項目或內容。該技術利用演算法來預測用戶未來的偏好,從而為他們提供最相關的內容。
該系統的範圍非常廣泛,廣泛應用於電子商務、串流媒體服務和社交媒體等各個行業。產品、電影、音樂、書籍等都可以透過這些系統推薦。提供個人化推薦不僅有助於提高客戶參與度和忠誠度,還可以促進銷售。
這些操作的理念是,使用者可以獲得與他們以前接觸過的項目相當的推薦。這種系統利用演算法來找出與使用者偏好非常相似的項目,目的是建立適合使用者的建議清單。在此設定中,演算法分析與商品相關的數據(例如其品質和用戶評分),以確定提出哪些建議。
步驟 1 − 導入必要的函式庫
第 2 步 - 載入資料集
步驟 3 - 預處理資料
步驟 4 - 計算相似性矩陣
第5步 − 對於每個使用者 −
選擇他們已經互動過的項目
對於在步驟5a中選擇的每個項目 -
檢索與所有其他項目的相似度分數
使用使用者的評分作為權重,計算相似度分數的加權平均值
根據加權相似度分數依降序對項目進行排序
#向使用者推薦前N個項目
第六步 - 傳回所有使用者的推薦。
import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity # Load data data = pd.read_csv('movies.csv') # Compute TF-IDF vectors for each movie tfidf = TfidfVectorizer(stop_words='english') tfidf_matrix = tfidf.fit_transform(data['description']) # Compute cosine similarity between all movies cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix) # Function to get top 10 similar movies based on input movie def get_recommendations(title): idx = data[data['title'] == title].index[0] sim_scores = list(enumerate(cosine_sim[idx])) sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True) sim_scores = sim_scores[1:11] movie_indices = [i[0] for i in sim_scores] return data.iloc[movie_indices] # Example usage: get top 10 movies similar to 'The Godfather' get_recommendations('The Godfather')
我們從本地CSV檔案載入電影資料到一個資料幀中。我們透過使用fit_transform()函數將電影描述轉換為矩陣,並計算餘弦相似性矩陣。
然後我們定義一個函數,它以電影標題作為參數,並在資料幀中檢索電影標題的索引(如果存在)。
然後我們建立一個包含傳遞的電影標題與所有其他電影標題之間相似度分數的元組清單。每個元組由索引和相似度分數組成。然後我們透過索引資料框來顯示電影標題的清單。
title \ 783 The Godfather 1512 The Godfather: Part II 1103 Casino 3509 Things to Do in Denver When 1246 Snatch 3094 Road to Perdition 2494 Scarface 1244 Following 2164 Dancer 2445 The Day of the Jackal
相反,這些依賴其他使用者的資料來產生推薦。這種系統會比較各種使用者的偏好和行為,然後建議其他具有類似口味的使用者可能喜歡的物品。與基於內容的系統相比,協同過濾通常更準確,因為它在產生推薦時考慮了許多使用者的意見。
步驟 1 − 導入必要的函式庫。
第 2 步 - 載入可提供使用者評分的「 ratings.csv」檔案。
第 3 步驟 - 建立「user_item_matrix」以將使用者評分資料轉換為矩陣
第 4 步 - 使用餘弦相似度計算使用者評分的相似度。
第 5 步 - 辨識相似使用者
第 6 步 - 計算平均分數。
步驟 7 - 選擇目標使用者 ID。
第 8 步 - 列印電影 ID 和評分。
import pandas as pd from sklearn.metrics.pairwise import cosine_similarity # Load data ratings_data = pd.read_csv('ratings.csv') # Create user-item matrix user_item_matrix = pd.pivot_table(ratings_data, values='rating', index='userId', columns='movieId') # Calculate cosine similarity between users user_similarity = cosine_similarity(user_item_matrix) # Get top n similar users for each user def get_top_similar_users(similarity_matrix, user_index, n=10): similar_users = similarity_matrix[user_index].argsort()[::-1] return similar_users[1:n+1] # Get recommended items for a user based on similar users def get_recommendations(user_id, user_similarity, user_item_matrix, n=10): similar_users = get_top_similar_users(user_similarity, user_id, n) recommendations = user_item_matrix.iloc[similar_users].mean(axis=0).sort_values(ascending=False).head(n) return recommendations # Example usage user_id = 1 recommendations = get_recommendations(user_id, user_similarity, user_item_matrix) print("Top 10 recommended movies for user", user_id) print(recommendations)
Top 10 recommended movies for user 1 movieId 1196 5.000000 50 5.000000 1210 5.000000 260 5.000000 1198 5.000000 2571 5.000000 527 5.000000 1197 5.000000 2762 5.000000 858 4.961538
創建推薦系統任務可能會為程式設計師帶來極大的複雜性,但它是一個有價值的工具,可以帶來巨大的好處。利用 Python 建置推薦系統提供了多種選項,可以簡化創建和自訂流程。然而,與任何編碼工作一樣,在開發推薦系統時可能會出現潛在問題。意識到這些典型的併發症並採取措施解決它們對於確保推薦系統的成功至關重要。
最終,重要的是要記住,推薦系統可以是一種非常強大的資產,因此值得投入必要的時間和精力來確保其正確構建並以最佳方式運行。
以上是在Python中的推薦系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!