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[['ty...

根据提供的代码,错误出现在第 29 行之后的缩进部分。请确保将其正确缩进。

以下是修正后的示例代码:

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[['type', 'title', '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['title']) - set(train_data[train_data['type'] == user_index]['title'])
    
    # 根据电影持续时间(duration)进行推荐,选择持续时间最短的n部电影作为推荐结果
    recommended_movies = data[data['title'].isin(target_user_unrated_movies)].sort_values('duration').head(n)
    
    return recommended_movies

# 对每个用户进行推荐并评估模型效果
n_users = ratings_data['type'].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('type').head(top_n).sort_values(['type', 'title'])

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

# 计算准确率、召回率和F1值
if len(predicted_pairs) == 0 or len(actual_pairs) == 0:
    f1 = 0
else:
    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)

请注意,我在第 29 行之后添加了正确的缩进。如果您还有其他问题,请随时提问。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?