首页 > 编程语言 >图书推荐与管理系统Python+协同过滤推荐算法+Django网页界面

图书推荐与管理系统Python+协同过滤推荐算法+Django网页界面

时间:2023-10-23 13:32:58浏览次数:36  
标签:ratings similarity Python 推荐 用户 Django item user total

一、介绍

图书管理与推荐系统。使用Python作为主要开发语言。前端采用HTML、CSS、BootStrap等技术搭建界面结构,后端采用Django作为逻辑处理,通过Ajax等技术实现数据交互通信。在图书推荐方面使用经典的协同过滤算法作为推荐算法模块。主要功能有:

  • 角色分为普通用户和管理员
  • 普通用户可注册、登录、查看图书、发布评论、收藏图书、对图书评分、借阅图书、归还图书、查看个人借阅、个人收藏、猜你喜欢(针对当前用户个性化推荐图书)
  • 管理员可以管理图书以及用户信息

二、部分效果展示图片

图书推荐与管理系统Python+协同过滤推荐算法+Django网页界面_图书管理

图书推荐与管理系统Python+协同过滤推荐算法+Django网页界面_Python_02

图书推荐与管理系统Python+协同过滤推荐算法+Django网页界面_图书推荐_03

图书推荐与管理系统Python+协同过滤推荐算法+Django网页界面_Python_04

三、演示视频 and 代码 and 介绍

视频+代码+介绍:yuque.com/ziwu/yygu3z/kpq3wsbzgif4vkpi

四、协同过滤算法

协同过滤(Collaborative Filtering, CF)是推荐系统中的一种常用方法。它基于一个简单的假设:过去喜欢相似物品的用户在未来也可能喜欢相似的物品。协同过滤的特点:

  1. 个性化推荐:它可以为每个用户提供个性化的推荐,因为它是基于用户的历史行为来做推荐的。
  2. 无需物品内容:CF方法不需要对物品的内容进行分析,只需要用户的交互数据。
  3. 冷启动问题:协同过滤受到所谓的“冷启动”问题的困扰,即新用户或新物品缺乏足够的交互数据来做出准确的推荐。

下面是一个简单的基于用户的协同过滤的Python示例代码:

from scipy.spatial.distance import cosine

# 模拟用户评分数据
user_ratings = {
    'Alice': {'Item1': 5, 'Item2': 3, 'Item3': 4},
    'Bob': {'Item1': 3, 'Item2': 1, 'Item3': 2},
    'Charlie': {'Item1': 4, 'Item2': 2, 'Item3': 5}
}

def compute_similarity(user1, user2):
    """计算两个用户之间的相似度,使用余弦相似度"""
    common_ratings = set(user1.keys()) & set(user2.keys())
    if not common_ratings:
        return 0

    # 提取两个用户的评分向量
    vec1 = [user1[item] for item in common_ratings]
    vec2 = [user2[item] for item in common_ratings]

    return 1 - cosine(vec1, vec2)

def get_recommendations(target_user, user_ratings):
    """为目标用户推荐物品"""
    total_scores = {}
    total_similarity = {}

    # 遍历每一个用户
    for user, ratings in user_ratings.items():
        if user == target_user:
            continue

        # 计算相似度
        similarity = compute_similarity(user_ratings[target_user], ratings)

        for item, score in ratings.items():
            if item not in user_ratings[target_user]:
                total_scores.setdefault(item, 0)
                total_scores[item] += score * similarity

                total_similarity.setdefault(item, 0)
                total_similarity[item] += similarity

    # 计算加权平均得分
    rankings = [(item, total_scores[item] / total_similarity[item]) 
                for item in total_scores]

    # 返回排序后的推荐列表
    return sorted(rankings, key=lambda x: x[1], reverse=True)

# 为Alice推荐物品
print(get_recommendations('Alice', user_ratings))

代码注释:

  • 首先,我们模拟了三个用户的评分数据。
  • compute_similarity 函数计算两个用户之间的相似度,这里我们使用余弦相似度。
  • get_recommendations 函数为目标用户推荐物品。它考虑了与目标用户相似的用户对物品的评分,并使用加权平均的方式来计算推荐分数。

这只是协同过滤的一个简单示例,实际应用中还需要考虑许多其他因素和优化手段。

标签:ratings,similarity,Python,推荐,用户,Django,item,user,total
From: https://blog.51cto.com/u_14536137/7986104

相关文章

  • [924] f-strings in Python
    ref:f-stringsinPythonref:Python'sF-StringforStringInterpolationandFormattingF-strings,alsoknownasformattedstringliterals,areafeatureintroducedinPython3.6thatprovideaconciseandconvenientwaytoembedexpressionsinside......
  • 分享一个批量转换某个目录下的所有ppt->pdf的Python代码
    大家好,我是皮皮。一、前言前几天在Python最强王者群【Python小小小白】分享了一份Python自动化办公的代码,可以批量转换某个目录下的所有ppt->pdf,非常强大。二、实现过程在正式跑代码之后,你可能需要按照对应的库,不然会报错。代码运行之后,本地会出现下面的UI界面,选择PPT文件夹即可,然......
  • Vscode中的python代码规范插件
    有几个流行的VSCode插件可以帮助你在Python开发中遵循代码规范。以下是其中一些常用的插件:1.Pylance:这是一个功能强大的语言服务器,提供了代码自动完成、类型检查、代码导航等功能。它可以与其他代码规范插件配合使用,提供实时的提示和建议。2.pylint:这是一个用于Python的静态代码......
  • 图书推荐管理系统Python+Django网页界面+协同过滤推荐算法
    一、介绍图书管理与推荐系统。使用Python作为主要开发语言。前端采用HTML、CSS、BootStrap等技术搭建界面结构,后端采用Django作为逻辑处理,通过Ajax等技术实现数据交互通信。在图书推荐方面使用经典的协同过滤算法作为推荐算法模块。主要功能有:角色分为普通用户和管理员普通用......
  • 延迟导入Python模块的几种方法
    延迟导入Python模块的几种方法-知乎(zhihu.com)#__init__.pyimportimportlib__all__=['complicated']def__getattr__(name):ifnamein__all__:returnimportlib.import_module("."+name,__name__)else:raiseAttributeError(f&qu......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-21-处理鼠标拖拽-番外篇
    1.简介前边宏哥拖拽有提到那个反爬虫机制,加了各种参数,以及加载js脚本文件还是有问题,偶尔宏哥好像发现了解决问题的办法,看到了黎明的曙光,宏哥就说试一下看看行不行,万一实现了。结果宏哥试了结果真的OK啊,但是宏哥第一次运行可以,后边就不行了,然后将编辑器关闭重启,再次运行又可以,宏哥......
  • Python根据类名实例化类
    python根据类的字符串名实例化对象_python给类名的字符串怎么实例化-CSDN博客Python如何根据类名实例化类_python依据class名实例化eval-CSDN博客python中如何根据给定的字符串类名来实例化一个类对象?-SegmentFault思否classTest:a=7def__int__(self,......
  • 综述推荐:视觉计算中的扩散模型
    StateoftheArtonDiffusionModelsforVisualComputinghttps://arxiv.org/pdf/2310.07204v1.pdf视觉计算(VisualComputing)领域,正因生成式人工智能(AI)的出现而快速发展,这为图像、视频和3D场景的生成、编辑和重建打开了前所未有的能力。这些领域中,扩散模型是生成式人工智能架构......
  • windows python 3.10.X 安装nose运行失败解决办法
    背景win11python3.10.Xpipinstallnose以后执行nosetests报错。报错内容如下:AttributeError:module‘collections’hasnoattribute‘Callable’ 省流在python3.10.X版本下执行pipuninstallnosepipinstall nose-py3卸载以后重新安装就可以搞定。 尝......
  • Python入门系列21-数学相关模块(math/decimal)
    一、math模块math库是Python提供的内置数学函数库,支持整数和浮点数运算。常用函数和属性如下图所示:函数/属性说明math.pi圆周率math.inf正无穷大math.ceil(浮点数)向上取整math.floor(浮点数)向下取整round(浮点数)四舍五入操作abs(数值)获取数值的绝对值math.fmod(x,y)返回x/y的......