python 推荐系统算法,Python用户推荐系统minkowski算法的实现
Python用户推荐系统minkowski算法的实现
#-*- coding: utf-8 -*-
'''
python: www.iplaypy.com
@author: Jekey
欧几里得距离
如果数据很稠密,使用该算法较好
'''
import codecs
from math import sqrt
users = {"Angelica": {"Blues Traveler": 3.5, "Broken Bells": 2.0, "Norah Jones": 4.5, "Phoenix": 5.0, "Slightly Stoopid": 1.5, "The Strokes": 2.5, "Vampire Weekend": 2.0},
"Bill":{"Blues Traveler": 2.0, "Broken Bells": 3.5, "Deadmau5": 4.0, "Phoenix": 2.0, "Slightly Stoopid": 3.5, "Vampire Weekend": 3.0},
"Chan": {"Blues Traveler": 5.0, "Broken Bells": 1.0, "Deadmau5": 1.0, "Norah Jones": 3.0, "Phoenix": 5, "Slightly Stoopid": 1.0},
"Dan": {"Blues Traveler": 3.0, "Broken Bells": 4.0, "Deadmau5": 4.5, "Phoenix": 3.0, "Slightly Stoopid": 4.5, "The Strokes": 4.0, "Vampire Weekend": 2.0},
"Hailey": {"Broken Bells": 4.0, "Deadmau5": 1.0, "Norah Jones": 4.0, "The Strokes": 4.0, "Vampire Weekend": 1.0},
"Jordyn": {"Broken Bells": 4.5, "Deadmau5": 4.0, "Norah Jones": 5.0, "Phoenix": 5.0, "Slightly Stoopid": 4.5, "The Strokes": 4.0, "Vampire Weekend": 4.0},
"Sam": {"Blues Traveler": 5.0, "Broken Bells": 2.0, "Norah Jones": 3.0, "Phoenix": 5.0, "Slightly Stoopid": 4.0, "The Strokes": 5.0},
"Veronica": {"Blues Traveler": 3.0, "Norah Jones": 5.0, "Phoenix": 4.0, "Slightly Stoopid": 2.5, "The Strokes": 3.0}
}
#Minkowski 距离
def minkowski(rate1,rate2,r):
distance = 0
commonRating = False
for key in rate1:
if key in rate2:
distance+=pow(abs(rate1[key]-rate2[key]),r)
commonRating=True
if commonRating:
return pow(distance,1/r)
else:
return -1
#返回最近距离用户
def computeNearestNeighbor(username,users):
distances = []
for key in users:
if key<>username:
distance = minkowski(users[username],users[key],2)
distances.append((distance,key))
distances.sort()
return distances
#推荐
def recommend(username,users):
#获得最近用户的name
nearest = computeNearestNeighbor(username,users)[0][1]
recommendations =[]
#得到最近用户的推荐列表
neighborRatings = users[nearest]
for key in neighborRatings:
if not key in users[username]:
recommendations.append((key,neighborRatings[key]))
recommendations.sort(key=lambda rat:rat[1], reverse=True)
return recommendations
if __name__ == '__main__':
print recommend('Hailey', users)
玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/code/algorithm/a2064.html
相关文章 Recommend
python 推荐系统算法,Python用户推荐系统minkowski算法的实现相关推荐
- 基于Python机器学习算法的电影推荐系统以及票房预测系统
电影数据分析 目录 电影数据分析 1 一..实验概述 1 1.1 实验标 1 1.2 .实验完成情况 1 二..电影特征的可视化分析 2 电影票房预测 9 2.1 Data Augmentation ...
- python编程顺序_Python编程中归并排序算法的实现步骤详解
基本思想:归并排序是一种典型的分治思想,把一个无序列表一分为二,对每个子序列再一分为二,继续下去,直到无法再进行划分为止.然后,就开始合并的过程,对每个子序列和另外一个子序列的元素进行比较,依次把小元 ...
- python实现mini-batch_Mini-Batch 、Momentum、Adam算法的实现
def random_mini_batches(X,Y,mini_batch_size=64,seed=0):"""从(X,Y)中创建一个随机的mini-batch列表 ...
- python素数算法,Python中的AKS素数算法
是的,去看看rosettacode.org上的AKS test for primes页面def expand_x_1(p): ex = [1] for i in range(p): ex.append ...
- C语言雪花算法,记一次雪花算法的实现
作者最近在实现雪花算法生成主键,看了不少文章.个人觉得雪花算法的最大的优点是有序(减少数据库的页分裂页合并).雪花算法本身很简单,但他依赖于时间,也就是机器或容器的时间一回拨就出现问题了.网上也出现了 ...
- 银行家算法中安全性检查子算法的实现
实验内容: 编程实现银行家算法中的安全性检查子算法,要求: (1) 本程序要能描述 n 个并发进程共享 m 类资源,在某一时刻的资源分配状态: n.m 自定,但都不能小于 3: (2) 本程序功能: ...
- 关于近邻保持算法LLE,LPP,NPE等算法的实现---流行学习
需要注意的是: 1.在基于流行学习的方法中,所谓的M=(I-W)*(I-W)'中的I是单位矩阵.而不是1 2.对于图W,我们将系数按照一列一列的形式放,并且,Sw = Train_Ma*Mg*Trai ...
- 粒子群算法(8)---混合粒子群算法的实现
混合粒子群算法将全局粒子群算法与局部粒子群算法结合,其速度更新采用公式 其中G(k+1)是全局版本的速度更新公式,而L(k+1)是局部版本的速度更新公式,混合粒子群算法采用H(k+1)的公式. 位置更 ...
- c语言kmp算法代码,C语言KMP算法的实现
KMP算法在模式与主串之间存在许多"部分匹配"的情况下,比BF算法快.(注意,接下来的串都是以下标为1作为起始储存位置.) 下面说一下实现代码: 首先是预定义和类型定义: #def ...
最新文章
- Delphi 与 C/C++ 数据类型对照表
- 13.2.2 路由层——URL控制器
- Ninject依赖注入(一)
- js html 转换为富文本,如何将富文本得到的html转换为pdf?
- 这个工具可以组合参数画出2种单细胞Marker显示图
- HUE与HBase的集成
- html5 跳转参数不显示_TeeChart for PHP教程(十二):Javascript / HTML5图表
- MultipartFile接口实现文件上传
- php 验证是否是xml,php判断str字符串是否是xml格式数据
- LayaAir UI 组件 # Button 按钮
- Nginx从入门到入坟(九)- Nginx静态资源如何防盗链
- 曲奇云盘资源搜索引擎_曲奇云盘下载-曲奇云盘资源共享群组下载_快啦网
- 基于C#的在线语音识别软件开发
- gimp 抠图_自动抠图工具,不用懂PS,还可以批量抠图
- MATLAB图像形状识别
- win11u盘无法弹出怎么办?win11u盘老是被占用不能退出?
- 如何查看ftp服务器信息,如何查看FTP空间使用了多少?
- 实现网站的高并发访问
- 数字电路基础知识——反相器的相关知识(噪声容限、VTC、转换时间、速度的影响因素、传播延时等)
- 2019计算机应用基础平时作业答案,2019年计算机应用基础作业一答案.docx
热门文章
- 攻防世界--MISC题之掀桌子
- 光伏并网发电系统MATLAB Simulink仿真设计。 该仿真包括电池,BOOST升压电路,单相全桥逆变电路
- 摒弃单一变现手段,开拓多元商业模式,破解场景单一APP盈利难题!
- 高速多通道误码测试仪BERT
- javafx 报错javafx.fxml.LoadException:和Caused by: java.lang.NullPointerException
- Tushare数据库公司基本面信息获取
- 这10 个工具,让你效率提升
- Emoji表情转换工具类
- 适用于快递物流行业的呼叫中心系统方案
- 现在国内IT行业是不是程序员过多了?