目录
前言
课题背景和意义
实现技术思路
实现效果图样例
大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。
对毕设有任何疑问都可以问学长哦!
选题指导: https://blog.csdn.net/qq_37340229/article/details/128243277
大家好,这里是海浪学长毕设专题,本次分享的课题是
基于大数据的移动图书馆个性化推荐系统
大数据时代的来临为移动图书馆推荐服务带来了新的机遇和挑战。文章针对移动图书馆个性化推荐 服务的多源大数据需求与数据融合应用难点,基于 Hadoop 技术框架,从基础数据层、推荐计算层、应用服务 层 3 个层面,建立多源大数据驱动的移动图书馆个性化推荐系统架构,并设计具体工作流程; 进而以图书资源 推荐服务为例,综合应用机器学习、数据挖掘、画像建模等方法提出推荐系统技术实现方案,为大数据环境下 的移动图书馆个性化推荐系统构建提供新的思路与方法。
移动图书馆突破了传统图书馆在时间与空间上的限制,使读者能够随时随地通过移动终端设备使用图书馆的 服务,已成为数字图书馆发展的主要方向。由于移动图书馆具备更强的交互性、灵活性和情境感知性,因而更适 合为读者提供个性化推荐服务。推荐服务的开展主要建立在广泛的数据采集与画像构建基础之上,随着大数据 时代的来临,移动图书馆可获取的数据类型和维度不断丰富,为个性化推荐服务提供了更充分的数据支撑,使多 源大数据在移动图书馆服务变革与智能升级中日益受到业界和学界的广泛关注。面对更加复杂、立体的大数据环 境,如何基于先进的技术架构,有效实现多源大数据采集与深度融合,进而精准挖掘用户偏好特征,建立高效智 能的个性化推荐系统,是促进移动图书馆智慧服务发展的重要基础。
由于移动图书馆个性化推荐系统所需的用户大数据、情境大数据和资源大数据广泛分布在不同信息系统和终 端设备中,且结构各异,因此需要分别利用不同技术方法进行有效采集。一方面,应用 Sqoop、ODI 等结构化大 数据处理工具对数据库中的标准化数据进行批量式抽取; 另一方面,应用 Flume、Kattle 等非结构化大数据处理 工具对图书馆用户访问日志、情境数据、多媒体网络资源数据等进行有效采集。在采集过程中,针对前文所述的 数据跨系统调用接口缺失和标准不统一的难点,可应用 ODI 等工具构建数据交换平台作为 “中间件”,将个性化 推荐系统所需的数据属性抽取到数据交换平台或 “临时中间表”存储,从而满足跨系统数据调用请求。
def get_book_data(url):
html = requests.get(url)
soup = BeautifulSoup(html.text, 'lxml')
book_list = soup.select('div.s-item-container')
for book in book_list:
title = book.select('h2')[0].text.strip()
author = book.select('div.a-row a.a-size-small')[0].text.strip()
price = book.select('span.a-size-base.a-color-price.s-price.a-text-bold')[0].text.strip()
print(title, author, price)
get_book_data(url)
初始采集的数据往往杂乱无序,无法直接用于推荐计算,需要进一步利用 ETL 工具进行数据清洗、消歧、归 一化、特征提取等预处理操作,提高数据可用性。经过预处理后的数据将同步到个性化推荐系统中的 HDFS 数据 存储单元,为数据融合应用与深度挖掘提供基础支撑。与此同时,经过实时采集处理后的数据则同步到推荐系统 中的 Kafka 消息引擎系统,供在线推荐计算使用。Kafka 是一个分布式日志系统,可用于对 Web 日志、访问日志 等数据的处理。
import pandas as pd
# 从csv文件读取书籍数据
book_data = pd.read_csv('book_data.csv')
# 检查书籍数据的缺失值
null_values = book_data.isnull().sum()
# 对书籍数据的缺失值进行填充
book_data.fillna(0, inplace=True)
# 给书籍数据的列添加标签
book_data.columns = ['book_name', 'author', 'category', 'rating', 'price']
# 对书籍数据的分类列进行数据标准化
category_mappings = {
'Fiction': 0,
'Non-fiction': 1,
'Mystery': 2,
'Romance': 3
}
book_data['category'] = book_data['category'].map(category_mappings)
在构建画像模型的基础上,推荐系统进一步通过召回、排序和优化,建立用户、情境、资源三者之间的内在 关联,实现个性化推荐。其中,召回阶段主要采用基于模型的推荐和基于内容的推荐两种形式,分别根据用户特 征标签初步筛选出与其特征相似的用户所喜爱的馆藏资源或与其以往偏好相似的馆藏资源,记录到 Hbase 数据库 的历史召回结果中; 排序阶段则以 Hbase 中存储的特征数据作为训练集和测试集,应用机器学习算法预测用户对 馆藏资源的偏好程度,然后进行推荐排序,进一步缩小召回阶段初筛结果的范围。而根据不同推荐场景对数据分 析时效性的要求,推荐系统既要考虑基于历史画像的离线计算,也要考虑基于用户实时点击、收藏、下载、阅览 等行为的在线计算,从而针对冷启动、网络加载超时等特殊情境,通过流量切分、超时截断、热门补足等方式对 推荐结果及时进行优化调整,提高用户的个性化推荐服务体验。
import pandas as pd
#读取数据
data=pd.read_csv('book_rating.csv')
#计算用户评分的平均分
user_rating_mean=data.groupby('user_id')['rating'].mean()
# 对每一本书,计算它被评分的平均分
book_rating_mean=data.groupby('book_id')['rating'].mean()
#计算每一本书的用户评分总和
book_rating_sum=data.groupby('book_id')['rating'].sum()
#计算每本书的用户评分次数
book_rating_count=data.groupby('book_id')['rating'].count()
#计算每本书的评分均值,即每本书的平均分
book_rating_mean=book_rating_sum/book_rating_count
#对每一本书,计算它和用户评分均值之间的差值
diff_rating=book_rating_mean-user_rating_mean
#按照差值排序,选出个性化推荐图书
diff_rating.sort_values(ascending=False,inplace=True)
#最终得到个性化推荐图书
recommend_book_list=diff_rating.index[:10]
print('个性化推荐图书:',recommend_book_list)
我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。
毕设帮助,疑难解答,欢迎打扰!