# movie_recommendation_APP_question **Repository Path**: YXY0216/movie_recommendation_app_question ## Basic Information - **Project Name**: movie_recommendation_APP_question - **Description**: 使用sklearn的KNN实现电影推荐应用 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 253 - **Created**: 2025-09-17 - **Last Updated**: 2025-09-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 电影推荐应用 ## 项目简介 这是一个基于KNN(K-最近邻)算法的电影推荐系统模拟应用。用户可以对两部电影进行评分(1-5分),系统会根据用户的评分模式和已有的训练数据,预测用户可能偏好的电影类型(动作片或喜剧片)。 项目包含两个主要部分: 1. **Jupyter Notebook (`1_movie_KNN.ipynb`)**:演示KNN算法的基本原理和实现 2. **图形界面应用 (`2_movie_rating_APP.py`)**:提供交互式的电影推荐体验 ## 技术架构 ### 核心技术栈 - **Python 3.x**:主要编程语言 - **scikit-learn**:机器学习库,提供KNN算法实现 - **tkinter**:GUI界面开发 - **pandas**:数据处理和分析 - **matplotlib**:数据可视化 - **PIL (Pillow)**:图像处理 - **numpy**:数值计算 ### 系统架构 ``` 电影推荐应用 ├── 数据层 │ ├── ratings.csv (用户评分数据) │ └── 电影海报图片 ├── 算法层 │ └── KNN分类器 (K=1) ├── 业务逻辑层 │ ├── 数据预处理 │ ├── 模型训练 │ └── 预测推理 └── 表示层 ├── GUI界面 └── 数据可视化 ``` ## 环境要求 ### Python版本 - Python 3.7+ ### 依赖库安装 ```bash pip install numpy pandas scikit-learn matplotlib pillow tkinter ``` 或使用requirements.txt(如果提供): ```bash pip install -r requirements.txt ``` ## 安装与运行 ### 1. 克隆项目 ```bash git clone [项目地址] cd movie_recommendation_app_question ``` ### 2. 安装依赖 ```bash pip install -r requirements.txt ``` ### 3. 运行Jupyter Notebook ```bash jupyter notebook 1_movie_KNN.ipynb ``` ### 4. 运行GUI应用 ```bash python 2_movie_rating_APP.py ``` ## 使用指南 ### Jupyter Notebook使用 1. 打开 `1_movie_KNN.ipynb` 2. 按顺序执行每个代码单元 3. 观察KNN算法的工作原理和可视化结果 ### GUI应用使用 1. **评分**:使用下拉菜单为两部电影评分(1-5分) 2. **选择偏好**:选择你更喜欢的电影类型 - 动作片(标签0) - 喜剧片(标签1) 3. **确认数据**:点击"Confirm"按钮保存你的评分数据 4. **获取推荐**:点击"Predict"按钮获取系统推荐 5. **清除数据**:点击"Clear"按钮清空所有历史数据 6. **查看可视化**:右侧图表实时显示数据分布和预测结果 ## 项目特色 ### 算法特点 - 使用KNN算法进行分类预测 - K值设置为1,寻找最相似的用户 - 支持实时数据更新和预测 ### 界面特点 - 直观的图形用户界面 - 实时数据可视化 - 交互式操作体验 ### 教学价值 - 演示机器学习算法的基本原理 - 提供完整的从数据到预测的流程 - 可视化算法决策过程 ## 文件结构 ``` movie_recommendation_app_question/ ├── 1_movie_KNN.ipynb # KNN算法演示notebook ├── 2_movie_rating_APP.py # GUI应用主程序 ├── ratings.csv # 用户评分数据存储 ├── post1_relie.jpg # 电影1海报 ├── post2_family.jpg # 电影2海报 └── README.md # 项目说明文档 ``` ## 算法原理 KNN(K-最近邻)算法是一种基于实例的学习算法: 1. 计算新样本与所有训练样本的距离 2. 选择距离最近的K个样本 3. 根据这K个样本的标签进行分类决策 在本项目中: - 特征:两部电影的评分 (Movie A, Movie B) - 标签:电影类型偏好(0=动作片,1=喜剧片) - K值:1(选择最相似的1个用户) ## 常见问题 ### Q: 为什么需要先添加数据才能进行预测? A: KNN算法需要训练数据来寻找最相似的样本。至少需要一条历史数据才能进行有效预测。 ### Q: 如何解释预测结果? A: 系统会找到与你评分最相似的历史用户,并推荐该用户偏好的电影类型。红色虚线显示了你与最相似用户的连接。 ### Q: 可以修改K值吗? A: 当前版本K值固定为1。可以在代码中修改 `KNeighborsClassifier(n_neighbors=1)` 来改变K值。 ## 扩展功能建议 1. **支持更多电影**:扩展到多部电影评分 2. **动态K值选择**:允许用户调整K值 3. **数据持久化**:使用数据库存储用户数据 4. **推荐置信度**:显示预测的置信度分数 5. **用户画像**:分析用户的评分模式 ## 技术支持 如有技术问题,请检查: 1. Python版本是否符合要求 2. 所有依赖库是否正确安装 3. 图片文件是否存在于正确路径 4. CSV文件权限是否正常 ## 作者信息 - **学号**: 202352320208 - **年级**: 2023级 - **专业**: 智能科学与技术 - **班级**: 二班 - **姓名**: 尹星宇 ## 版本历史 - **v1.0** (2025-09-17): 初始版本发布 - 完成KNN算法基本实现 - 实现GUI交互界面 - 添加数据可视化功能 ## 许可证 本项目仅供学习和教学使用。