用户提问: 写代码ai推荐
Ai回答: 以下是一个简单的AI推荐系统代码示例,使用Python和协同过滤算法实现。这个例子使用了MovieLens数据集,这是一个常用的电影评分数据集。
首先,你需要安装必要的库:
bash
pip install pandas numpy scipy
然后,你可以使用以下Python代码:
python
import pandas as pd
from scipy.sparse import csr_matrix
from sklearn.neighbors import NearestNeighbors
加载数据
def load_data():
假设你已经下载了MovieLens数据集,并将其解压到当前目录下
ratings = pd.read_csv('ratings.csv')
movies = pd.read_csv('movies.csv')
return ratings, movies
创建用户-电影评分矩阵
def create_rating_matrix(ratings):
创建一个以用户ID和电影ID为索引的矩阵
user_movie_matrix = ratings.pivot(index='userId', columns='movieId', values='rating')
用0填充缺失值(表示用户没有对该电影评分)
user_movie_matrix.fillna(0, inplace=True)
return csr_matrix(user_movie_matrix.values)
构建推荐模型
def build_model(user_movie_matrix):
使用KNN算法构建模型
model = NearestNeighbors(metric='cosine', algorithm='brute')
model.fit(user_movie_matrix)
return model
获取推荐
def get_recommendations(model, user_id, user_movie_matrix, movies, num_recommendations=5):
找到最近邻
distances, indices = model.kneighbors(user_movie_matrix[user_id], n_neighbors=num_recommendations+1)
第一个是用户自己,所以我们从1开始
for i in range(1, len(indices[0])):
similar_user_id = indices[0][i]
获取相似用户的评分数据
similar_user_ratings = user_movie_matrix[similar_user_id]
找到相似用户高评分的电影
high_rated_movie_ids = [i for i, rating in enumerate(similar_user_ratings) if rating >= 4]
获取这些电影的标题
recommended_movies = movies.iloc[high_rated_movie_ids]['title'].tolist()
print(f为用户{user_id}推荐的电影(基于用户{similar_user_id}的偏好):{recommended_movies})
主函数
def main():
ratings, movies = load_data()
user_movie_matrix = create_rating_matrix(ratings)
model = build_model(user_movie_matrix)
user_id = 1 示例用户ID
get_recommendations(model, user_id, user_movie_matrix, movies)
if __name__ == __main__:
main()
这个例子演示了如何使用协同过滤(更具体地说,是基于用户的协同过滤)来为用户推荐电影。它首先加载用户对电影的评分数据,然后构建一个用户-电影评分矩阵。之后,它使用KNN(K-最近邻)算法来找到与目标用户最相似的其他用户,并基于这些相似用户的偏好来推荐电影。
请注意,这个例子做了一些简化,实际应用中可能需要处理更多问题,如冷启动问题(新用户或新电影)、稀疏性问题(大多数用户没有对大多数电影评分)等。
0
IP地址: 140.101.88.138
搜索次数: 0
提问时间: 2025-04-22 20:18:32
热门提问:
建研设计
兴证全球丰德债券A
美术加ai官网
ai 培训 价格
南方上证科创板芯片ETF发起联接C