基于卷积神经网络的电影推荐系统

简介: 基于卷积神经网络的电影推荐系统

前言


如今协同过滤等传统推荐算法被广泛用于推荐,但也存在冷启动、矩阵稀疏等问题,本项目用深度学习来实现电影推荐,核心算法主要参考了https://blog.csdn.net/chengcheng1394/article/details/78820529,基于tensorflow和卷积神级网络来实现个性化电影推荐。web端用django来进行开发。


1.实现效果


1.1 算法运行结果


(1)输入电影,推荐相似的电影以及看过的人还喜欢的电影



(2)输入用户信息,推荐其喜爱的电影



1.2 系统主要界面


登录模块


电影推荐模块




2.主要代码实现


2.1 网络模型代码


网络模型代码这里就不放了,可以参考https://blog.csdn.net/chengcheng1394/article/details/78820529


2.2 django代码


以下是django的一些主要代码:


urls.py配置路由


settings.py配置数据库


登录模块

def login(request):
    if request.method == 'GET':
        return render(request, 'login.html')
    else:
        #用户POST提交的数据
        u = request.POST.get('user')
        p = request.POST.get('pwd')
        #把账号密码写死了
        # if u == 'cxx' and p == '123':
        #     #登录成功
        #     return redirect('/mess/')
        #从数据库中判断账号密码是否正确
        if u and p:
            c = User.objects.filter(username=u,password=p).count()
            if c >= 1:
                #获取当前登录的用户id
                cur_id = User.objects.get(username=u, password=p).id
                return redirect('/mess/?user_id='+str(cur_id))
            else:
                return render(request, 'login.html', {'msg': '账号密码错误'})
        else:
            #登录失败
            return render(request, 'login.html', {'msg': '请输入正确的账号密码'})

推荐喜欢的电影

def like(request):
    user_id = request.GET.get('user_id')
    #获取当前用户
    my_user = models.User.objects.get(id=user_id)
    global global_model
    model = global_model
    print('-------正在推荐--------', user_id)
    list_like_movies_names, list_like_movies_ids = model.recommend_your_movie(int(user_id))
    print('你喜欢的电影:', list_like_movies_names)
    print('你喜欢的电影id:', list_like_movies_ids)
    # 你喜欢的电影
    list_dict_like = []
    for i in list_like_movies_names[:6]:
        list_dict_like.append(utils.movie_dic(i))
    for i in range(len(list_dict_like)):
        # list_dict_like[i]['movie_id'] = list_like_movies_ids[i]
        list_dict_like[i]['movie_id'] = int(list_like_movies_ids[i])    #把字典中的id转int类型,便于前端if判断
    print('相似电影列表:', list_dict_like)
    context = {}
    context['list_dict_like'] = list_dict_like
    context['my_user'] = my_user    #返回当前用户,在前端页面显示当前登陆的用户名
    return render(request, 'like.html', context)

推荐同类型的电影和看过的人喜欢的电影

def index(request):
    #获取电影id
    movie_id = request.GET.get('movie_id')
    global global_model
    model = global_model
    print('-------正在推荐--------', movie_id)
    #choice_movie_name 选择的电影名称
    #list_same_movies_names 相似的电影名称
    #list_pepole_like_movies_names 喜欢这个电影的人还喜欢的电影名称
    #list_same_movies_ids 相似的电影id
    #list_pepole_like_movies_ids 喜欢这个电影的人还喜欢的电影id
    #和recommend_by_movie方法的返回值一一对应
    choice_movie_name, list_same_movies_names, list_pepole_like_movies_names, list_same_movies_ids, list_pepole_like_movies_ids = model.recommend_by_movie(
        int(movie_id))
    print('选择电影:', choice_movie_name)
    print('相似的电影:', list_same_movies_names)
    print('喜欢这个电影的人还喜欢:', list_pepole_like_movies_names)
    print('相似的电影id:', list_same_movies_ids)
    print('喜欢这个电影的人还喜欢id:', list_pepole_like_movies_ids)
    #选择的电影
    list_dict_choice = []
    for i in choice_movie_name:
        list_dict_choice.append(utils.movie_dic(i))
    list_dict_choice[0]['movie_id'] = movie_id
    print('选择电影列表:', list_dict_choice)
    # 相似的电影
    list_dict_same = []
    # for i in list_same_movies_names[:3]:    #最多显示3部电影
    for i in list_same_movies_names:
        list_dict_same.append(utils.movie_dic(i))
    for i in range(len(list_dict_same)):
        # list_dict_same[i]['movie_id'] = list_same_movies_ids[i]
        list_dict_same[i]['movie_id'] = int(list_same_movies_ids[i])    #把字典中的id转int类型,便于前端if判断
    print('相似电影列表:', list_dict_same)
    # 看过的用户还喜欢的电影
    list_dict_otherlike = []
    for i in list_pepole_like_movies_names:
        list_dict_otherlike.append(utils.movie_dic(i))
    for i in range(len(list_dict_otherlike)):
        # list_dict_otherlike[i]['movie_id'] = list_pepole_like_movies_ids[i]
        list_dict_otherlike[i]['movie_id'] = int(list_pepole_like_movies_ids[i])    #把字典中的id转int类型,便于前端if判断
    print('喜欢这个电影的人还喜欢列表:', list_dict_otherlike)
    context = {}
    context['list_dict_choice'] = list_dict_choice
    context['list_dict_same'] = list_dict_same
    context['list_dict_otherlike'] = list_dict_otherlike
    return render(request, 'index.html', context)
相关文章
|
6月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
8月前
|
机器学习/深度学习 算法 机器人
【PID】基于人工神经网络的PID控制器,用于更好的系统响应研究(Matlab&Simulink代码实现)
【PID】基于人工神经网络的PID控制器,用于更好的系统响应研究(Matlab&Simulink代码实现)
953 16
|
6月前
|
Ubuntu 网络协议 网络安全
解决Ubuntu系统的网络连接问题
以上步骤通常可以帮助解决大多数Ubuntu系统的网络连接问题。如果问题仍然存在,可能需要更深入的诊断,或考虑联系网络管理员或专业技术人员。
1581 18
|
6月前
|
监控 安全 网络协议
Cisco Identity Services Engine (ISE) 3.5 发布 - 基于身份的网络访问控制和策略实施系统
Cisco Identity Services Engine (ISE) 3.5 发布 - 基于身份的网络访问控制和策略实施系统
673 1
Cisco Identity Services Engine (ISE) 3.5 发布 - 基于身份的网络访问控制和策略实施系统
|
6月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
7月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
479 2
|
7月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
639 11
|
8月前
|
安全 KVM 虚拟化
Cisco Identity Services Engine (ISE) 3.4 - 基于身份的网络访问控制和策略实施系统
Cisco Identity Services Engine (ISE) 3.4 - 基于身份的网络访问控制和策略实施系统
475 2
Cisco Identity Services Engine (ISE) 3.4 - 基于身份的网络访问控制和策略实施系统
|
8月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
559 18

热门文章

最新文章

下一篇
开通oss服务