百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

推荐系统实例_推荐系统有哪三个部分组成

itomcoil 2025-09-18 01:24 2 浏览

协同过滤算法:

# 第14课:推荐系统实践 - 完整的协同过滤推荐系统示例

# 1. 导入必要的库
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity

# 2. 准备数据:创建用户-图书评分数据集
def create_data():
    """
    创建并返回用户-图书评分DataFrame
    """
    user_book_ratings = {
        '用户': ['小明', '小红', '小刚', '小丽', '小华'],
        '《三体》': [5, 4, 5, 3, 2],
        '《哈利波特》': [4, 5, 3, 4, 5],
        '《小王子》': [2, 3, 1, 5, 4],
        '《西游记》': [3, 2, 4, 2, 3],
        '《编程入门》': [1, 1, 2, 1, 5]
    }
    
    # 创建DataFrame并设置用户列为索引
    rating_df = pd.DataFrame(user_book_ratings).set_index('用户')
    return rating_df

# 3. 计算用户相似度矩阵
def calculate_similarity(rating_df):
    """
    计算并返回用户余弦相似度矩阵
    """
    # 使用余弦相似度计算用户之间的相似性
    user_similarity = cosine_similarity(rating_df)
    
    # 将相似度矩阵转换为DataFrame,方便阅读
    user_sim_df = pd.DataFrame(
        user_similarity,
        index=rating_df.index,
        columns=rating_df.index
    )
    return user_sim_df

# 4. 生成推荐结果
def generate_recommendations(target_user, rating_df, user_sim_df, n=2):
    """
    为目标用户生成图书推荐
    
    参数:
    target_user: 目标用户名
    rating_df: 用户-图书评分矩阵
    user_sim_df: 用户相似度矩阵
    n: 推荐数量
    """
    # 找到与目标用户最相似的其他用户(排除自己)
    similar_users = user_sim_df[target_user].sort_values(ascending=False)[1:]
    
    recommendations = {}
    
    # 遍历相似用户
    for user, similarity in similar_users.items():
        # 获取该相似用户的评分数据
        user_ratings = rating_df.loc[user]
        
        # 遍历相似用户评分过的图书
        for book, rating in user_ratings.items():
            # 只考虑评分较高的图书(>=4分)且目标用户未评分或评分较低的
            if rating >= 4 and rating_df.loc[target_user, book] < 3:
                if book not in recommendations:
                    recommendations[book] = 0
                # 加权计算推荐度:相似度 × 评分
                recommendations[book] += similarity * rating
    
    # 按推荐度排序并返回前n个结果
    sorted_recommendations = sorted(
        recommendations.items(), 
        key=lambda x: x[1], 
        reverse=True
    )[:n]
    
    return sorted_recommendations

# 5. 主函数:运行完整的推荐流程
def main():
    """
    运行推荐系统的主要流程
    """
    print("=" * 50)
    print("推荐系统实践 - 协同过滤算法演示")
    print("=" * 50)
    
    # 步骤1: 创建数据
    print("\n1. 用户-图书评分矩阵:")
    rating_df = create_data()
    print(rating_df)
    
    # 步骤2: 计算用户相似度
    print("\n2. 用户相似度矩阵:")
    user_sim_df = calculate_similarity(rating_df)
    print(user_sim_df.round(3))  # 保留3位小数便于阅读
    
    # 步骤3: 为每个用户生成推荐
    print("\n3. 个性化推荐结果:")
    print("-" * 30)
    
    for user in rating_df.index:
        recommendations = generate_recommendations(user, rating_df, user_sim_df)
        
        if recommendations:
            print(f" 为【{user}】推荐的图书:")
            for book, score in recommendations:
                print(f"    {book} (推荐度:{score:.2f})")
        else:
            print(f" 【{user}】暂无新书推荐")
        print()  # 空行分隔
    
    # 步骤4: 算法原理说明
    print("\n4. 算法原理说明:")
    print("o 基于用户的协同过滤算法")
    print("o 使用余弦相似度计算用户间相似性")
    print("o 推荐度 = 相似用户评分 × 相似度加权和")
    print("o 只为用户推荐未读过的高分书籍")

# 6. 运行程序
if __name__ == "__main__":
    main()

推荐系统实践 - 协同过滤算法演示

==================================================

1. 用户-图书评分矩阵:

《三体》 《哈利波特》 《小王子》 《西游记》 《编程入门》

用户

小明 5 4 2 3 1

小红 4 5 3 2 1

小刚 5 3 1 4 2

小丽 3 4 5 2 1

小华 2 5 4 3 5

2. 用户相似度矩阵:

用户 小明 小红 小刚 小丽 小华

用户

小明 1.000 0.964 0.964 0.873 0.789

小红 0.964 1.000 0.873 0.945 0.850

小刚 0.964 0.873 1.000 0.764 0.774

小丽 0.873 0.945 0.764 1.000 0.865

小华 0.789 0.850 0.774 0.865 1.000

3. 个性化推荐结果:

------------------------------

为【小明】推荐的图书:

《小王子》 (推荐度:7.52)

《编程入门》 (推荐度:3.94)

为【小红】推荐的图书:

《编程入门》 (推荐度:4.25)

《西游记》 (推荐度:3.49)

为【小刚】推荐的图书:

《小王子》 (推荐度:6.91)

《编程入门》 (推荐度:3.87)

为【小丽】推荐的图书:

《编程入门》 (推荐度:4.32)

《西游记》 (推荐度:3.05)

为【小华】推荐的图书:

《三体》 (推荐度:11.21)

4. 算法原理说明:

o 基于用户的协同过滤算法

o 使用余弦相似度计算用户间相似性

o 推荐度 = 相似用户评分 × 相似度加权和

o 只为用户推荐未读过的高分书籍

相关推荐

Python GUI 编程入门教程 第11章:数据库操作与文件管理

11.1数据库操作:与SQLite结合在许多应用中,数据的存储和管理是必不可少的部分。Tkinter本身并不自带数据库支持,但你可以通过Python的sqlite3模块来将数据库功能集成到Tkint...

Python GUI 编程入门教程 第12章:图形绘制与用户交互

12.1图形绘制:Canvas控件Tkinter提供了一个非常强大的控件Canvas,可以用来绘制各种图形,如线条、矩形、圆形等。通过Canvas控件,用户可以在GUI中添加绘图、图像和其他复杂的内...

Python GUI 编程入门教程 第16章:图形绘制与动画效果

16.1使用Canvas绘制图形Tkinter的Canvas控件是一个非常强大的绘图工具,可以用来绘制各种基本图形,如线条、矩形、圆形、文本等。Canvas允许你通过编程创建和修改图形元素,非常适合...

Python GUI 编程入门教程 第10章:高级布局与界面美化

10.1高级布局管理:使用grid和placeTkinter提供了三种常用的布局管理方式:pack、grid和place。在本章中,我们重点介绍grid和place,这两种布局方式相较于pack更加...

手机Python编程神器——AidLearning

【下载和安装】1、让我们一起来看下吧,直接上图。第一眼看到是不是觉得很高逼格,暗黑画风,这很大佬。其实它就是------AidLearning。一个运行在安卓平台的linux系统,而且还包含了许多非常...

Python GUI开发:从零开始创建桌面应用

在数字化时代,桌面应用依然是我们日常生活中不可或缺的一部分。无论是办公软件、游戏还是各种工具,它们都依赖于图形用户界面(GUI)来提供直观的操作体验。Python的wxPython库为我们提供了一个强...

Python界面(GUI)编程PyQt5窗体小部件

一、简介在Qt(和大多数用户界面)中,“小部件”是用户可以与之交互的UI组件的名称。用户界面由布置在窗口内的多个小部件组成。Qt带有大量可用的小部件,也允许您创建自己的自定义和自定义小部件。二、小部件...

自学Python的8个正确顺序仅供参考

今天决定写一个Python新人的自学指南,好多人搞不清楚自学的顺序及路线,今天提供给大家参考一下,其实自学编程真的没有难。1【Python基础】安装并配置Python环境和编译软件Pycharm,这...

Python | Python交互式编程神器_python交互运行

很多Pythoner不怎么喜欢用Python交互式界面编程,例如使用Jupyter工具。感觉交互式编程没有把代码敲完再debug舒服。但是在对一些模块/功能进行调试的时候还是非常香的。例如我在写爬虫程...

Python GUI 编程入门教程 第14章:构建复杂图形界面

14.1界面布局管理在Tkinter中,界面控件的排列是通过布局管理器来实现的。Tkinter提供了三种布局管理器:pack、grid和place,每种布局管理器都有其独特的用途和优势。14.1.1...

Python数据库编程教程:第 1 章 数据库基础与 Python 连接入门

1.1数据库的核心概念在开始Python数据库编程之前,我们需要先理解几个核心概念。数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它就像一个电子化的文件柜,能让我们高效...

Python GUI 编程入门教程 第1章:Tkinter入门

1.1什么是Tkinter?Tkinter是Python的标准GUI库,它是Python语言的内置模块,无需额外安装。在Tkinter中,我们可以创建窗口、按钮、标签、文本框等常见的GUI元素。1....

用Python做个简单的登录页面_python怎么编写一个登录界面

我们上网时候,很多网站让你登录,没有账号注册会员,不能复制、粘贴都不让你操作。那我们怎么去实现这个窗口呢?很多语言都可以实现,根据你的需求去确定用哪个,这里我们学习python,就用tkinter测...

Python入门学习教程:第 16 章 图形用户界面(GUI)编程

16.1什么是GUI编程?图形用户界面(GraphicalUserInterface,简称GUI)是指通过窗口、按钮、菜单、文本框等可视化元素与用户交互的界面。与命令行界面(CLI)相比,...

推荐系统实例_推荐系统有哪三个部分组成

协同过滤算法:#第14课:推荐系统实践-完整的协同过滤推荐系统示例#1.导入必要的库importpandasaspdfromsklearn.metrics.pairwise...