推荐系统是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 构建推荐系统提供了多种选项,可以简化创建和定制过程。然而,与任何编码工作一样,开发推荐系统时可能会出现潜在问题。意识到这些典型的并发症并采取措施解决它们对于确保推荐系统的成功至关重要。
最终,重要的是要记住,推荐系统可以是一种非常强大的资产,因此值得投入必要的时间和精力来确保其正确构建并以最佳方式运行。
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » 在Python中的推荐系统