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

商品购物管理与推荐系统Python+Django网页界面+协同过滤推荐算法

时间:2023-11-21 14:00:55浏览次数:57  
标签:ratings Python 推荐 用户 Django 评分 过滤 user 相似

一、介绍

商品管理与推荐系统。本系统使用Python作为主要开发语言,前端采用HTML、CSS、BootStrap等技术搭建显示界面,后端采用Django框架处理用户的请求响应。
创新点:使用协同过滤算法,以用户对商品的评分作为依据,在猜你喜欢界面中实现对当前登录用户的个性化推荐。
主要功能有:

  • 系统分为用户和管理员两个角色。
  • 用户可以登录、注册、查看商品、购买商品、添加购物车、发布评论、对商品进行评分、查看购物车、编辑个人信息、充值等操作
  • 管理员在后台管理系统中可以对用户和商品进行管理

二、系统功能效果图片展示

img_11_21_13_25_36

img_11_21_13_25_53

img_11_21_13_25_25

img_11_21_13_25_19

三、演示视频 and 代码 and 安装

地址:https://www.yuque.com/ziwu/yygu3z/qsszw5siwwf2vtf3

四、协同过滤算法介绍

协同过滤算法是一种广泛应用于推荐系统的技术,它基于一个简单的假设:如果两个人在过去喜欢相同的东西,那么他们在将来也有可能喜欢相似的东西。这种算法通常分为两类:基于用户的协同过滤和基于物品的协同过滤。

  • 基于用户的协同过滤:这种方法首先找出与目标用户兴趣相似的其他用户,然后根据这些相似用户的喜好来推荐物品给目标用户。
  • 基于物品的协同过滤:与之相反,这种方法先找出与目标物品相似的其他物品,然后把这些物品推荐给那些喜欢目标物品的用户。

现在,让我们用Python实现一个简单的基于用户的协同过滤算法。我们将创建一个小型的电影评分数据集,并基于用户的评分相似性来推荐电影。

import numpy as np

# 创建一个用户-电影评分矩阵
ratings = np.array([
    [5, 4, 1, 1, 3],
    [3, 2, 1, 3, 3],
    [4, 3, 3, 1, 5],
    [3, 3, 1, 2, 4],
    [1, 5, 5, 2, 1],
])

def cosine_similarity(v1, v2):
    """计算两个向量之间的余弦相似度"""
    return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))

def recommend_movies(ratings, user_index):
    """为指定用户推荐电影"""
    scores = []
    target = ratings[user_index]

    for i, user_ratings in enumerate(ratings):
        if i != user_index:
            score = cosine_similarity(target, user_ratings)
            scores.append((i, score))

    scores.sort(key=lambda x: x[1], reverse=True)
    print("最相似的用户索引和相似度分数:", scores)

    # 取出最相似用户的评分
    similar_user_ratings = ratings[scores[0][0]]

    # 找出该用户未评分但相似用户评分高的电影
    recommendations = []
    for i in range(len(similar_user_ratings)):
        if target[i] == 0 and similar_user_ratings[i] >= 4:
            recommendations.append(i)

    return recommendations

# 推荐电影给用户0
print("推荐给用户0的电影索引:", recommend_movies(ratings, 0))

这段代码中,我们首先定义了一个简单的用户-电影评分矩阵,然后使用余弦相似度计算不同用户之间的相似度。基于这些相似度分数,我们找出与目标用户最相似的用户,然后推荐那些目标用户未评分但相似用户评分较高的电影。这就是一个基本的协同过滤推荐示例。

标签:ratings,Python,推荐,用户,Django,评分,过滤,user,相似
From: https://www.cnblogs.com/shiqianlong/p/17846430.html

相关文章

  • Python下使用requests库遇到的问题及解决方案
    每一盏灯都有一个故事……当凌晨2点我的房间灯还亮着时,那就是我与BUG的一场生死博弈。一个人静静地坐在电脑前不断地写代码,感觉快要麻木了,好比闭关修炼一样枯燥无味。最终当我打通任督二脉后,bug修复迎来的一片曙光。一、问题背景在最近的项目中,我使用Python3.6和DigestAuth进行身......
  • 给大家推荐一个免费的云平台-阿贝云
    在这里给大家推荐一个免费的云平台-阿贝云:搭建一个属于自己的服务器,写APP的服务端,给自用的APP提供网络服务。我用来同步课程表和课程任务。有很多好处: 1、放置公司网站和电子商务平台随着越来越多的公司开始通过互联网开发业务渠道,许多公司将选择将其网站放置在云服......
  • Django自定义接口
    一、在有默认(create、list、retrieve、update、destroy)接口时自定义接口classIterationsViewSet(MyModelViewSet):queryset=uc_iterations.objects.all().order_by('id')serializer_class=IterationsSerializerpagination_class=DIYPagination#配置自定......
  • django连接mysql pycharm操作sqlite和mysql
    1如果项目使用sqlite,不需要额外配置,直接操作即可2django默认情况链接mysql,用的驱动是mysqldb模块,python3.x以后,这个模块用不了了,咱们用的全都是pymysql,需要做个替换3showmigrations:查看哪些记录更改了,但是没有同步到数据库中3如果使用mysql,需要配置如下: -1配置文件中配置......
  • MySQL主从搭建及Django实现读写分离
    mysql主从搭建#1主从同步的流程或原理1)master会将变动记录到二进制日志里面;2)master有一个I/O线程将二进制日志发送到slave;3)slave有一个I/O线程把master发送的二进制写入到relay日志里面;4)slave有一个SQL线程,按照relay日志处理slave的数据;#2在home目录下创建mys......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-31-JavaScript的调用执行-上篇
    1.简介在做web自动化时,有些情况playwright的api无法完成以及无法应对,需要通过或者借助第三方手段比如js来完成实现,比如:去改变某些元素对象的属性或者进行一些特殊的操作,本文讲解playwright怎样来调用JavaScript完成特殊操作。2.用法上一篇中就提到过,这里提取一下,语法如下:......
  • 29.8k star,推荐一个酷炫、强大的现代开源文件资源管理器
    先看张图,下载地址在文末:「Files」是一款为Windows设计的现代化文件管理器,它具有美观的界面、强大的功能和高效的操作。本文将介绍「Files」的基本信息、使用方法、特点和安装方式,并对其进行总结。「Files」简介「Files」是一个由社区驱动的开源项目,由数百名贡献者共同设计和......
  • Python深入分享之闭包
    闭包(closure)是函数式编程的重要的语法结构。函数式编程是一种编程范式(而面向过程编程和面向对象编程也都是编程范式)。在面向过程编程中,我们见到过函数(function);在面向对象编程中,我们见过对象(object)。函数和对象的根本目的是以某种逻辑方式组织代码,并提高代码的可重复使用性......
  • Linux环境下Python3.10安装
    事件缘起我在Linux服务器(CentOS7.8)安装Python3.10,并替换python软链接为python3之后,yum命令不可用。特此记录一下。完整安装步骤如下:Python3.10安装1.使用yum程序提前安装Python依赖。yuminstallwgetzlib-develbzip2-developenssl-develncurses-develsqlite-devel......
  • python区分大小写吗
    当涉及Python语言时,它是区分大小写的。这意味着在Python编程中,标识符、变量名、函数名以及关键字是区分大小写的。标识符和变量名在Python中,标识符是用来标识变量、函数、类或其他对象的名称。Python对标识符和变量名是严格区分大小写的。例如,myVar和myvar被视为两个不同的变量......