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...

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

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[['user_id', 'movie_id', 'rating']]

# 划分训练集和测试集(假设80%数据用于训练,20%数据用于测试)
train_data, test_data = train_test_split(ratings_data, test_size=0.2)

def top_n_recommendation(user_index, n):
    # 获取目标用户未评分的电影列表
    target_user_unrated_movies = set(data['movie_id']) - set(train_data[train_data['user_id'] == user_index]['movie_id'])
    
    # 根据电影持续时间(duration)进行推荐,选择持续时间最短的n部电影作为推荐结果
    recommended_movies = data[data['movie_id'].isin(target_user_unrated_movies)].sort_values('duration').head(n)
    
    return recommended_movies

# 对每个用户进行推荐并评估模型效果
n_users = ratings_data['user_id'].nunique()
top_n = 10

predicted_recommendations = [top_n_recommendation(user_index + 1, top_n) for user_index in range(n_users)]

# 获取实际的用户-电影关系矩阵(测试集)
actual_recommendations = test_data.groupby('user_id').head(top_n).sort_values(['user_id', 'movie_id'])

# 将预测结果和实际结果转换为用户-电影对的集合形式
predicted_pairs = set([(row['user_id'], row['movie_id']) for recs in predicted_recommendations for _, row in recs.iterrows()])
actual_pairs = set([(row['user_id'], row['movie_id']) for _, row in actual_recommendations.iterrows()])

# 计算准确率、召回率和F1值
precision = len(predicted_pairs.intersection(actual_pairs)) / len(predicted_pairs)
recall = len(predicted_pairs.intersection(actual_pairs)) / len(actual_pairs)
f1 = 2 * precision * recall / (precision + recall)

print("准确率:", precision)
print("召回率:", recall)
print("F1值:", f1)

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


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?