ZBLOG

import pandas as pd from sklearn.metrics import precision_score, recall_score, f1_score from sklearn.model_selection import train_test_split # 从CSV文件读取数据 data = pd.read_csv("netflix_titles.csv") # 只保留用户ID、电影ID和评分信息,丢弃其他列 ratings_data = data[['us...

根据您提供的代码,以下是对其进行了一些修改:

  1. import pandas as pd
  2. from sklearn.metrics import precision_score, recall_score, f1_score
  3. from sklearn.model_selection import train_test_split
  4. # 从CSV文件读取数据
  5. data = pd.read_csv("netflix_titles.csv")
  6. # 只保留用户ID、电影ID和评分信息,丢弃其他列
  7. ratings_data = data[['user_id', 'movie_id', 'rating']]
  8. # 划分训练集和测试集(假设80%数据用于训练,20%数据用于测试)
  9. train_data, test_data = train_test_split(ratings_data, test_size=0.2)
  10. def top_n_recommendation(user_index, n):
  11. # 获取目标用户未评分的电影列表
  12. target_user_unrated_movies = set(data['movie_id']) - set(train_data[train_data['user_id'] == user_index]['movie_id'])
  13. # 根据电影持续时间(duration)进行推荐,选择持续时间最短的n部电影作为推荐结果
  14. recommended_movies = data[data['movie_id'].isin(target_user_unrated_movies)].sort_values('duration').head(n)
  15. return recommended_movies
  16. # 对每个用户进行推荐并评估模型效果
  17. n_users = ratings_data['user_id'].nunique()
  18. top_n = 10
  19. predicted_recommendations = [top_n_recommendation(user_index + 1, top_n) for user_index in range(n_users)]
  20. # 获取实际的用户-电影关系矩阵(测试集)
  21. actual_recommendations = test_data.groupby('user_id').head(top_n).sort_values(['user_id', 'movie_id'])
  22. # 将预测结果和实际结果转换为用户-电影对的集合形式
  23. predicted_pairs = set([(row['user_id'], row['movie_id']) for recs in predicted_recommendations for _, row in recs.iterrows()])
  24. actual_pairs = set([(row['user_id'], row['movie_id']) for _, row in actual_recommendations.iterrows()])
  25. # 计算准确率、召回率和F1值
  26. precision = len(predicted_pairs.intersection(actual_pairs)) / len(predicted_pairs)
  27. recall = len(predicted_pairs.intersection(actual_pairs)) / len(actual_pairs)
  28. f1 = 2 * precision * recall / (precision + recall)
  29. print("准确率:", precision)
  30. print("召回率:", recall)
  31. print("F1值:", f1)

请注意,这只是一个示例修改,并假设您已经正确导入所需的库并具有正确格式的输入数据。如果您有其他需要修改或补充的要求,请提供更多细节。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=15771

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?