(董付国)Python 学习笔记---Python序列(4)

2023-11-07

字典应用案例

  • 已有大量用户对若干电影的打分数据,现有某用户,也看过一些电影并进行过评分,要求根据已有打分数据为该用户进行推荐。

    1.代码采用基于用户的过滤协同算法,也就是根据用户喜好来确定与当前用户最相似的用户,然后再根据最相似用户的喜好为当前用户进行推荐。
    2.代码采用字典来存放数据,格式为{用户1:{电影名称1:打分1,电影名称2:打分2,…},用户2:{…}}。

from random import randrange

#历史电影打分数据
data = {'user'+str(i):{'film'+str(randrange(1,15)):randrange(1,6)
                                 for j in range(randrange(3,10))}
        for i in range(10)}

#当前用户打分数据
user = {'film'+str(randrange(1,15)):randrange(1,6) for i in range(5)}

#最相似的用户及其对电影打分情况
#两个用户共同打分的电影最多
#并且所有电影打分差值的平方和最小
similarUser,films = min(data.items(),
                        key = lambda item:(-len(item[1].keys()&user),
                                           sum(((item[1].get(film)-user.get(film))**2
                                           for film in user.keys()&item[1].keys()))))
print('konwn data'.center(50,'='))
for item in data.items():
    print(len(item[1].keys()),
          sum(((item[1].get(film)-user.get(film))**2
               for film in user.keys()&item[1].keys())),
          item,
          sep=':')
print('current user'.center(50,'='))
print(user)
print('most similar user and his films'.center(50,'='))
print(similarUser,films,sep=':')
print('recommended film'.center(50,'='))
#在当前用户没看过的电影中选择打分最高的进行推荐
print(max(films.keys()-user.keys(),key = lambda film:films[film]))

运行结果(随机):

====================konwn data====================
6:1:('user0', {'film14': 5, 'film7': 4, 'film9': 3, 'film8': 1, 'film10': 5, 'film2': 4})
7:9:('user1', {'film4': 2, 'film13': 1, 'film8': 3, 'film3': 1, 'film10': 5, 'film7': 5, 'film2': 2})
6:17:('user2', {'film7': 4, 'film12': 5, 'film8': 2, 'film9': 2, 'film3': 3, 'film11': 1})
4:0:('user3', {'film3': 3, 'film6': 1, 'film7': 3, 'film13': 5})
7:0:('user4', {'film3': 5, 'film1': 4, 'film9': 1, 'film6': 2, 'film14': 4, 'film13': 1, 'film12': 2})
3:13:('user5', {'film2': 1, 'film12': 1, 'film11': 3})
7:16:('user6', {'film14': 1, 'film4': 5, 'film12': 4, 'film6': 4, 'film3': 5, 'film1': 3, 'film13': 1})
2:0:('user7', {'film10': 1, 'film14': 3})
3:0:('user8', {'film9': 2, 'film3': 3, 'film8': 4})
6:0:('user9', {'film4': 1, 'film8': 1, 'film7': 3, 'film13': 5, 'film12': 4, 'film10': 1})
===================current user===================
{'film11': 5, 'film4': 1, 'film5': 1, 'film7': 3, 'film2': 4}
=========most similar user and his films==========
user1:{'film4': 2, 'film13': 1, 'film8': 3, 'film3': 1, 'film10': 5, 'film7': 5, 'film2': 2}
=================recommended film=================
film10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(董付国)Python 学习笔记---Python序列(4) 的相关文章

  • Pandas学习之to_csv()

    用法 df to csv 输出路径 参数1 参数2 参数3 sep 以逗号 作为数据的分隔符 如果分隔符不为逗号 则包含符双引号 就会消失 分隔符为Tab时 写法如下 df to csv new csv sep t na rep NA 确实
  • Python学习笔记(六):数据类型之 List

    序列是 python 中最基本的数据类型 序列中的每个元素都分配一个索引 索引从 0 开始 python 有六个序列的内置类型 最常见的是列表和元祖 序列都可以进行的操作 包括索引 切片 加 乘 检查成员 此外 python 已经内置确定序
  • python删除字符串左右两边的多个符号

    引号中加入删除符号的列表 删除左右大括号和空格 n strip n
  • Python3.7 Scrapy 提示def write(self,data,asyc) 语法错误

    Scrapy 执行爬虫任务 提示如下错误信息如下 from twisted conch import manhole telnet File D python3 6 Lib site packages twisted conch manho
  • Python语言:列表初体验

    列表是Python中的一个对象 他类似于C语言中的数组 可以存储许多数据 也可以称之为数据集合 他原则是可以存储不同类型的数据 一般不建议这样使用 有点奇怪 一般情况下一个列表中保存的都是同一种类型的数据 列表的创建 列表 list 是把数
  • 【python学习笔记】seaborn模块

    目录 热力图介绍 seaborn模块绘制热力图 热力图介绍 热力图是一种特殊的图表 它是一种通过对色块着色来显示数据的统计图表 在绘图时 需要指定每个颜色映射的规则 一般以颜色的强度或色调为标准 比如颜色越深的表示数值越大 程度越深 颜色越
  • 2.Python简介、特点、安装配置、pip包管理命令

    Python简介 Python 语言 语言 人与人之间交流需要语言 比如说汉语 英语 编程语言就是人与机器交流的语言 面向过程往面向对象的过渡 例 C C C sharp Java是面向对象 面向过程 面向过程可以认为是流程 一步一步操作
  • Python 中的<>和!= 区别

    今天在编写Python MySQL 采集脚本过程中 需要使用到 不等于 表达方式 第一种写法 在Python2 6以前版本 不等于 if string atof func get item mysql status Qcache hits
  • Numpy&Pandas 数据处理与挖掘

    笔记来源B站 https www bilibili com video BV1xt411v7z9 p 21 python学习笔记 1 Numpy 1 1 Numpy优势 1 1 1 Numpy介绍 1 1 2 ndarray介绍 1 1 3
  • Python3-excel文档操作(二):利用openpyxl库处理excel表格:在excel表格中插入图片

    1 简介 excel表中可以插入图片 使用openpyxl库可以实现这个功能 2 代码 coding utf 8 import os import sys import time import openpyxl from openpyxl
  • 【Python_PyQtGraph 学习笔记(三)】基于GraphicsLayoutWidget实现显示曲线对象 鼠标位置处坐标的功能

    基于GraphicsLayoutWidget实现显示曲线对象 鼠标位置处坐标的功能 前言 在PyQtGraph的官方例程中有此功能的实现 可参考Crosshair Mouse interaction 但是坐标值的变化是超过整数时才变化 不符
  • anaconda换清华镜像源(Windows)

    第一步 在C Users 用户名 下输入如下图所示的命令 conda config set show channel urls yes 第二步 在下图路径 找到如下图蓝色标记的文件 第三步 用记事本打开上一步找到的文件 将里面的内容完全替换
  • python range()函数 while循环 for in循环 break continue与else语句 嵌套循环

    range 函数的使用 1 用于生成一个整数序列 2 创建range对象的三种方式 lt 1 gt range stop gt 创建一个 0 stop 之间的整数序列 步长为1 第一种 range stop gt 创建一个 0 stop 之
  • Python3学习实战——用类实现简单的猜拳游戏

    Python3学习实战 用类实现简单的猜拳游戏 前言 本笔记仅个人认知和见解 水平有限 还请见谅 如有错误 还请指出 若有想法 欢迎共享 内容不代表最优解决方案 甚至可能不是很好的方法 仅供参考 文章目录 Python3学习实战 用类实现简
  • 【Python】用xpath爬取网页文字保存到txt中(含有文字解码代码)

    本文收录于 python学习笔记 专栏 这个专栏主要是我学习Python中遇到的问题 学习的新知识 或总结的一些知识点 我也是初学者 可能遇到的问题和大部分新人差不多 在这篇专栏里 我尽可能的分享出我学习的内容 专栏在持续更新中 hello
  • python学习笔记—— socket编程

    上篇 https blog csdn net qq 42489308 article details 89388112 socket编程 什么是socket 简称套接字 是进程间通信的一种方式 它与其他进程间通信的一个主要不同是 它能实现不
  • Windows7 Python3 搭建Scrapy 爬虫框架

    Windows7 64位 Python3 7 安装Scrapy 提示如下错误信息 解决办法 1 在python库中下载twisted相应的包 whl文件 官网地址 https www lfd uci edu gohlke pythonlib
  • python 复杂表达式

    复杂表达式 使用for循环的迭代不仅可以迭代普通的list 还可以迭代dict 假设有如下的dict d Adam 95 Lisa 85 Bart 59 完全可以通过一个复杂的列表生成式把它变成一个 HTML 表格 tds tr td s
  • [Pandas]Dataframe中的多条件切片为什么不能使用and运算符

    对于Dataframe中同一列 如果有多个条件 则不能使用and运算符 需要使用 位运算符 示例如下 import pandas as pd df pd DataFrame name a a b b classes 1 2 3 4 pric
  • pandas对文本数据进行长度统计

    在NLP的各项任务中 都需要对语料的长度有一个概括性的了解 例如平均长度 最大长度 大多数语料的长度范围等 以此来确定输入模型时的最大文本长度 pandas库有一种写法可以快速的统计文本语料的长度情况 pd pandas Series po

随机推荐

  • VS Code 问题:launch:program‘...\.vscode\launch.exe‘ dose not exist

    VS Code 问题 launch program vscode launch exe dose not exist 问题描述 解决过程 参考内容 问题描述 按照博客大佬们的指导 给 VS Code 配置 C 语言环境 参考推荐 菜得扣 的
  • 时间复杂度和空间复杂度计算

    之前一直对于时间复杂度 O 1 O n O n 3 等弄不清楚是如何计算的 所以学习一番在此分享 背景 算法是指用来操作数据 解决程序问题的一组方法 对于同一个问题 使用不同的算法 也许最终得到的结果是一样的 但在过程中消耗的资源和时间却会
  • css实现border渐变样式

    项目中用到了border的渐变使用 虽然可以使用图片 但不如代码实现效果好 所以实现了border两头渐变的效果 效果如图 text desc width 24 height 100 box sizing border box 必须设置bo
  • BBR算法

    BBR算法 简述 bbr算法为google在2016年提出 用于改善tcp的性能 提升稳定性 降低延迟 更好地应对网络损伤 在整个算法调节周期中 bbr算法都在尽力维持最大bw和最小rtt 对比传统的tcp算法 传统算法不能区分是拥塞导致的
  • Qt命令行的使用

    以前使用命令行指定参数启动Qt程序都是用argc和argv 有时用Build环境设置 现在才知道原来Qt从5 2就有了两个类 QCommandLineParser 和 QCommandLineOption 专门用于命令行启动 它们属于Cor
  • 主机漏洞利用演示MS17-010(永恒之蓝)

    ms17 010危害 对被攻击方的电脑造成蓝屏 申明 本篇文章的用意仅做学习使用 网络搭建环境 软件 Vmware Workstation 17 攻击机 Kali 靶机环境 Windows 7 Nmap软件的基本功能 1 主机发现 Host
  • .NET平台框架解读

    概述 微软在 NET跨平台之路上付出了巨大的艰辛 同时做了海量的工作 首先推出了统一的API标准规范库 NET Standard 并不断补充完善标准库 截止目前 2023 6 30 最新版本为 NET Standard 2 1 2016年发
  • 最详细的Java入门到入土完整学习教程,学Java先收藏了!

    目录 Java是一门广泛应用于软件开发的高级编程语言 它以其跨平台性 面向对象的特性和丰富的生态系统而受到广大开发者的喜爱 本教程将带您从Java的入门阶段一直深入到精通的水平 涵盖了40种常用的Java开发技术栈 并结合中国的应用场景给出
  • yolov5,yolov4,yolov3乱七八糟的

    结构对比 别问这么好看的图哪来的 问就是善假于人 toulai 的 下面简单讲讲图中我认为比较明显的变化 yolov4 backbone 全部用的都是Mish激活函数取代了yolov3的Leakyrelu 在backbone就开始使用con
  • 【PCL】的五大依赖库及作用

    安装点云PCL Point Cloud Library 库时 需要额外安装5个依赖库 它们有什么作用呢 如下 Boost 用于共享指针和多线程 Eigen 一个标准的C 模板库用于线性代数 矩阵 向量等计算 FLANN Fast Appro
  • SpringBoot集成Spring Security

    1 Spring Security介绍 Spring security 是一个强大的和高度可定制的身份验证和访问控制框架 它是确保基于Spring的应用程序的标准 来自官方参考手册 Spring security 和 shiro 一样 具有
  • 模型训练到一个新batch时会被killed【原因以及解决方法】

    模型训练到一个新batch时会被killed 原因以及解决方法 1 减小batchsize 2 减小num workers 在Dataloader函数中
  • 【区块链】周鸿祎:写区块链最好的一篇文章;曾鸣:大部分关于区块链未来伟大前景的讨论还只是猜想而已

    区块链就是未来 也是一种回到互联网本来意义的方式 文 机器之能 注 奇虎360创始人周鸿祎说 这是了解区块链最深入浅出的一篇文章 以下正文 这组词序并没有任何意义 真正让它们有价值的地方在于 这个词序是由一个被称为 MetaMask 的软件
  • 类对象的私有数据是无法被直接访问的,但是为什么在复制构造函数中,可以直接通过引用访问被复制对象的私有数据?

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题 有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中 居左 居右 Sma
  • csdn获取自己所有博客的地址,包含分页

    获取自己的所有博客地址 一 步骤 1 先获取首页看到的部分 2 正则截取每月发表的博客数 总和即是所有的博客数 3 分页请求获取每一页的博客 4 正则截取获得每篇博客的地址 二 代码 import re import math import
  • 感应(异步)电机无速度传感器技术—TI例程解析

    电机控制系列文章 感应 异步 电机磁场定向控制MATLAB Simulink建模 感应 异步 电机磁场定向控制电流环PI控制参数设计 感应 异步 电机磁场定向控制速度环PI控制参数设计 感应 异步 电机无速度传感器技术 电压模型法 目录 电
  • Python实现简单猜数字游戏,输入不是整数时,给出提示

    猜数字游戏 要求 1 使用random 函数产生一个预设整数 让用户通过键盘输入所猜的数 如果小于预设的数 显示 遗憾 太小了 如果大于预设的数 显示 遗憾 太大了 如此循环 至猜中 提示 恭喜 预测N次 你猜中了 2 当用户输入的不是整数
  • thinkPHP_V5漏洞

    php rce攻防世界 百度thinkphpv5 查询到其存在过漏洞 在网页中随便注入 可观察到其版本为V5 0 20 再上旬该版本漏洞 描述为 只要在url后添加 s index think app invokefunction func
  • 全栈之前端

    欢迎关注 全栈工程师修炼指南 公众号 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 花开堪折直须折 莫待无花空折枝 作者主页 https www weiyigeek top 博客 https b
  • (董付国)Python 学习笔记---Python序列(4)

    字典应用案例 已有大量用户对若干电影的打分数据 现有某用户 也看过一些电影并进行过评分 要求根据已有打分数据为该用户进行推荐 1 代码采用基于用户的过滤协同算法 也就是根据用户喜好来确定与当前用户最相似的用户 然后再根据最相似用户的喜好为当