数据

下载链接:https://download.csdn.net/download/u010379996/15743786

诗词100首:Index(['id', 'title', 'era', 'author', 'content', 'translations'], dtype='object')

已读记录数据:可程序创建 :Index(['userId', 'dataId', 'status'], dtype='object')

代码

import numpy as np
from lightfm import LightFM
import pandas as pd
from scipy.sparse import csr_matrixdef recommendation_user(model, user_data_interaction, user_id, user_dict, item_dict, data_metadata_csr, threshold = 0, size = 5):if (user_id in user_dict.keys()) == False:print("user not found")return Nonen_users, n_items = user_data_interaction.shapeuser_x = user_dict[user_id]scores = pd.Series(model.predict(user_x, np.arange(n_items), item_features=data_metadata_csr))scores.index = user_data_interaction.columnsscores = list(pd.Series(scores.sort_values(ascending=False).index))known_items = list(pd.Series(user_data_interaction.loc[user_id,:] \[user_data_interaction.loc[user_id,:] > threshold].index).sort_values(ascending=False))scores = [x for x in scores if x not in known_items]return_score_list = scores[0:size]known_items = list(pd.Series(known_items).apply(lambda x: item_dict[x]))scores = list(pd.Series(return_score_list).apply(lambda x: item_dict[x]))return known_items, scores## 加载数据
datapath = ""
data = pd.read_csv(datapath + "content.csv")
print(data.columns)
data = data[['id','title']]
user_data = pd.read_csv(datapath+"user_content.csv")
print(user_data.columns)## 数据处理
item_dict ={}
df = data[['id', 'title']].sort_values('id').reset_index()
for i in range(df.shape[0]):item_dict[(df.loc[i,'id'])] = df.loc[i,'title']data_metadata_selected_transformed = pd.get_dummies(data, columns = ['title'])
data_metadata_selected_transformed = data_metadata_selected_transformed.sort_values('id').reset_index().drop('index', axis=1)
data_metadata_csr = csr_matrix(data_metadata_selected_transformed.drop('id', axis=1).values)user_data_interaction = pd.pivot_table(user_data, index='userId', columns='dataId', values='status')
user_data_interaction = user_data_interaction.fillna(0)userid_list = list(user_data_interaction.index)
user_dict = {}
counter = 0
for i in userid_list:user_dict[i] = countercounter += 1user_data_interaction_csr = csr_matrix(user_data_interaction.values)## 训练
model = LightFM(loss='warp')
model = model.fit(user_data_interaction_csr,epochs=30,num_threads=2, verbose=False)## 推荐
userId = 9
known_items, scores = recommendation_user(model, user_data_interaction, userId, user_dict, item_dict, data_metadata_csr)
print('user id : ', userId)
print('read : ', known_items)
print('recommendation : ', scores)

结果

user id :  9
read :  ['归嵩山作', '过香积寺', '乌衣巷', '陇西行四首·其二', '为有', '闺怨', '芙蓉楼送辛渐', '崔九欲往南山马上口号与别/留别王维/送崔九', '八阵图', '渡汉江', '新嫁娘词']
recommendation :  ['江雪', '隋宫', '问刘十九', '送别/山中送别', '喜外弟卢纶见宿']

协同推荐 + lightfm + 根据用户已读诗词推荐相关推荐

  1. 具有用户已读状态功能的公告(3):一键已读所有公告

    文章目录 1 摘要 2 解决方案 方案一 方案二 方案三 3 结论 1 摘要 关于公告这一系列的博客: 具有用户已读状态功能的公告(1):数据库设计 具有用户已读状态功能的公告(2):用户查询公告列表 ...

  2. 推荐系统 --- 推荐算法 --- 基于用户行为的推荐算法 - 协同过滤算法

    概述 历史 1992年,Goldberg.Nicols.Oki及Terry提出 基本思想 爱好相似的用户喜欢的东西可能也会喜欢 优点 共享朋友的经验,提高推荐的准确度 根据爱好相似的用户喜欢的视频进行 ...

  3. java 邮件跟踪_如何跟踪邮件已读状态(Java)

    >图片的展示形式: html中图片元素表示: 其中src部分是比较好玩的,我们可以用图片服务器链接地址,例如: 我们也可以使用base64的图片字符串,例如: >利用图片加载来跟踪用户打开 ...

  4. 消息已读未读的模型设计_构建一个即时消息应用(三):对话 | Linux 中国

    在我们的即时消息应用中,消息表现为两个参与者对话的堆叠.-- Nicolás Parada 本文是该系列的第三篇. ◈ 第一篇:模式◈ 第二篇:OAuth 在我们的即时消息应用中,消息表现为两个参与者 ...

  5. app里未读消息已读、未读是怎么设计的?

    也不知道大家目前都用的java编程软件有哪些,毕竟在应用程序中,未读和已读消息的设计取决于应用程序的需求和目标.下面是一些常见的设计模式: 一.简单的未读/已读标记 简单的未读/已读标记:这是最常见的 ...

  6. QQ 调查用户是否希望推 「已读」功能,如何评价「已读」功能?QQ是否要加这个功能?...

    12月14日上午,腾讯QQ在官方微博发起投票,"你希望QQ出已读功能吗?" 截止发稿,共有近500人参与投票,其中一半人选择"你出我就卸载QQ",另有1/4的网 ...

  7. 协同过滤推荐算法-基于用户的协同过滤UserCF及python实现

    协同过滤推荐算法 基本思想: 根据用户的历史行为数据的挖掘发现用户的兴趣爱好,基于不同的兴趣爱好对用户进行划分并推荐兴趣相似的物品给用户. 协同过滤推荐算法包含: 1.1基于记忆的推荐算法(基于领域的 ...

  8. 使用Java+SSM(Spring+SpringMVC+Mybatis)如何开发个性化音乐推荐系统 在线音乐推荐网站 基于用户、项目的协同过滤推荐算法实现MusicRecommendSystemWeb

    使用Java+SSM(Spring+SpringMVC+Mybatis)如何开发个性化音乐推荐系统 在线音乐推荐网站 基于用户.项目的协同过滤推荐算法实现MusicRecommendSystemWeb ...

  9. 如何使用Java+SSM(Spring+SpringMVC+Mybatis)开发个性化新闻推荐系统 在线新闻推荐系统 基于用户项目协同过滤、内容、聚类、关联规则推荐算法实现WebNewsRSMEx

    如何使用Java+SSM(Spring+SpringMVC+Mybatis)开发个性化新闻推荐系统 在线新闻推荐系统 基于用户项目协同过滤.内容.聚类.关联规则推荐算法实现WebNewsRSMEx 一 ...

最新文章

  1. 使用script命令自动录屏用户操作
  2. Django内置的分页模块
  3. mock模拟的数据能增删改查吗_如何在Vue中使用Mockjs模拟数据的增删查改
  4. 前端学习(3239):react生命周期setstate流程
  5. Z-BlogPHP名扬图文博客主题模板
  6. mysql st_contains实现_MySQL实现树状所有子节点查询的方法
  7. [ZT]Addison Wesley's Free Chapters and Articles
  8. 语音识别行业成长红利期已过,行业寡头显现,小公司生存状况堪忧
  9. Pandas系列(八)字符串处理
  10. c语言自学方式,c语言学习方法
  11. 镜像翻转_《蒙娜丽莎》镜像翻转后,暗藏神秘的第二张脸?网友:笑容消失了...
  12. 分享 | 自动驾驶现代百年史:从汽车工业的“白日梦”谈起
  13. 日语——动词的各种变形
  14. 一秒快速修正 mysql ERROR 1406 (22001): Data too long for column ‘name‘ at row 1
  15. php如何ping域名的ip,使用PHP ping域名或IP
  16. ERROR: Failed to open zip file. Gradle‘s dependency cache may be corrupt (this sometimes occurs afte
  17. Neural Feature Search for RGB-Infrared Person Re-Identification
  18. 人工智能将为中小企业发展带来什么?
  19. 新零售微服务解决方案,打通企业微信、饿了么、美团、京东到家
  20. 七大实例巧解主板常见故障

热门文章

  1. 【Python】安装模块失败? 一篇文章教你彻底掌握镜像安装
  2. GUI原理1 - 色彩王国
  3. 漏洞挖掘 | 简单高效的模糊测试Fuzzing
  4. Windows App开发之经常使用控件与应用栏
  5. 安全精简添加,让肌肤喝饱水,袋鼠妈妈打消孕期护肤疑虑
  6. 全球与中国混凝土防水添加剂市场发展态势预测与十四五战略规划研究报告2022-2028年版
  7. oracle技术交流群,编程人员必备QQ技术交流群,请选择你所需要的群吧……
  8. RLlib Training APIs
  9. [附源码]Python计算机毕业设计成都美食交流平台
  10. 如何策划一场销量百万的直播间,详细阐述其中玩法技巧丨国仁网络