首頁 >後端開發 >Python教學 >在Python中的推薦系統

在Python中的推薦系統

WBOY
WBOY轉載
2023-09-19 22:45:04789瀏覽

在Python中的推薦系統

推薦系統是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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除