m0_56062032 2024-03-14 13:45 采纳率: 68%
浏览 1
已结题

大于号类型不匹配问题

>符号不匹配问题 ,改了好多地方都没有用


def evaluate_recommendations(test_set, userma_to_num, data_handling, predict, k=10):
    total_TP = 0
    total_FP = 0
    total_FN = 0
    for user_id in test_set.index:
        recommendations = recommend_movies(user_id, userma_to_num, data_handling, predict, k)
        actual_liked_movies = test_set.loc[user_id][test_set.loc[user_id] > 0].index.tolist()
        TP_user = 0
        FP_user = 0
        FN_user = 0
        for movie_id in recommendations:
            if movie_id in actual_liked_movies:
                TP_user += 1
            else:
                FP_user += 1
        for movie_id in actual_liked_movies:
            if movie_id not in recommendations:
                FN_user += 1
        total_TP += TP_user
        total_FP += FP_user
        total_FN += FN_user
    precision = total_TP / (total_TP + total_FP) if (total_TP + total_FP) != 0 else 0
    recall = total_TP / (total_TP + total_FN) if (total_TP + total_FN) != 0 else 0
    f1_score = 2 * (precision * recall) / (precision + recall) if (precision + recall) != 0 else 0
    return precision, recall, f1_score
  • 写回答

3条回答 默认 最新

  • Kwan的解忧杂货铺 Java领域优质创作者 2024-03-14 13:46
    关注

    m0_56062032 下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    根据你提供的代码和问题描述,我发现你遇到了大于号类型不匹配的问题。这个问题可能是由于数据类型或运算符的不匹配导致的。下面是一些可能的解决方案:

    1. 检查数据类型: 首先,确认test_setuserma_to_num的数据类型是正确的。比如,确保它们是numpy数组或pandas数据框。如果不是,可能需要将它们转换为正确的数据类型。

    2. 检查条件语句: 确保在recommendationsactual_liked_movies中使用的条件语句是正确的。比如,确认test_set.loc[user_id] > 0返回的是一个布尔数组,以匹配大于号运算符。

    3. 查看更改的代码部分: 你提到已经进行了一些更改,但没有效果。请仔细检查更改的代码部分,确保没有遗漏其他可能导致问题的地方。

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

    def evaluate_recommendations(test_set, userma_to_num, data_handling, predict, k=10):
        total_TP = 0
        total_FP = 0
        total_FN = 0
        for user_id in test_set.index:
            recommendations = recommend_movies(user_id, userma_to_num, data_handling, predict, k)
            actual_liked_movies = test_set.loc[user_id][test_set.loc[user_id].gt(0)].index.tolist()
            TP_user = 0
            FP_user = 0
            FN_user = 0
            for movie_id in recommendations:
                if movie_id in actual_liked_movies:
                    TP_user += 1
                else:
                    FP_user += 1
            for movie_id in actual_liked_movies:
                if movie_id not in recommendations:
                    FN_user += 1
            total_TP += TP_user
            total_FP += FP_user
            total_FN += FN_user
        precision = total_TP / (total_TP + total_FP) if (total_TP + total_FP) != 0 else 0
        recall = total_TP / (total_TP + total_FN) if (total_TP + total_FN) != 0 else 0
        f1_score = 2 * (precision * recall) / (precision + recall) if (precision + recall) != 0 else 0
        return precision, recall, f1_score
    

    这里,我使用了.gt(0)方法来替代大于号运算符,也就是将test_set.loc[user_id] > 0改为test_set.loc[user_id].gt(0)。这是pandas中的一种方法,它可以返回一个布尔数组,用以判断哪些值大于0。

    希望这些解决方案能够帮助你解决问题。如果问题仍然存在,请提供更多代码和错误信息以便我们更好地帮助你。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月22日
  • 已采纳回答 3月14日
  • 创建了问题 3月14日

悬赏问题

  • ¥15 pip install后修改模块路径,import失败,需要在哪里修改环境变量?
  • ¥15 爬取1-112页所有帖子的标题但是12页后要登录后才能 我使用selenium模拟登录 账号密码输入后 会报错 不知道怎么弄了
  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥50 vue组件中无法正确接收并处理axios请求
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 MATLAB联合adams仿真卡死如何解决(代码模型无问题)
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决
  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline
  • ¥50 分布式追踪trace异常问题