🔙 恢复原 README(期末实践题·电影类别预测)
This commit is contained in:
127
README.md
127
README.md
@@ -4,46 +4,93 @@
|
|||||||
班级: AI_251
|
班级: AI_251
|
||||||
学号: 2509165048
|
学号: 2509165048
|
||||||
仓库: final-practice
|
仓库: final-practice
|
||||||
原数据文件: viz_data.json
|
原讲义文件: 期末实践题_电影类别预测.md
|
||||||
说明: 纯数据,可直接用于 5 种图(条形图/折线图/饼图/雷达图/散点图)
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
```json
|
# 人工智能数据服务 · 综合实践
|
||||||
{
|
|
||||||
"description": "学生考试成绩数据 - 可同时绘制 5 种图(条形图/折线图/饼图/雷达图/散点图)",
|
> 课程代码:090945 班级:人工智能251班(50人)
|
||||||
"bar_chart": {
|
> 考试形式:上机实践 · 2 节连堂(90 分钟)· 个人独立完成
|
||||||
"title": "各学生数学成绩对比",
|
|
||||||
"x": ["张三", "李四", "王五", "赵六", "钱七", "孙八", "周九", "吴十", "郑明", "王芳"],
|
---
|
||||||
"y": [92, 88, 76, 85, 90, 82, 78, 95, 72, 88]
|
|
||||||
},
|
## 一、说明
|
||||||
"line_chart": {
|
|
||||||
"title": "班级各科平均分趋势(6个月)",
|
**类别词典**(共 10 类,本试卷通用):
|
||||||
"month": ["1月", "2月", "3月", "4月", "5月", "6月"],
|
|
||||||
"语文": [78, 80, 82, 85, 83, 86],
|
|
||||||
"数学": [82, 84, 85, 87, 88, 90],
|
|
||||||
"英语": [80, 82, 81, 84, 85, 87]
|
|
||||||
},
|
|
||||||
"pie_chart": {
|
|
||||||
"title": "班级成绩等级分布",
|
|
||||||
"labels": ["优秀(>=90)", "良好(80-89)", "中等(70-79)", "待提高(<70)"],
|
|
||||||
"values": [1, 7, 2, 0]
|
|
||||||
},
|
|
||||||
"radar_chart": {
|
|
||||||
"title": "三位学生五科成绩对比",
|
|
||||||
"categories": ["语文", "数学", "英语", "物理", "化学"],
|
|
||||||
"students": {
|
|
||||||
"张三": [85, 92, 78, 88, 90],
|
|
||||||
"李四": [78, 88, 92, 75, 82],
|
|
||||||
"王五": [92, 76, 85, 90, 78]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"scatter_chart": {
|
|
||||||
"title": "学习时长 vs 数学成绩",
|
|
||||||
"x_label": "每周学习时长(小时)",
|
|
||||||
"y_label": "数学成绩",
|
|
||||||
"x": [3, 5, 4, 6, 5, 4, 5, 6, 2, 7],
|
|
||||||
"y": [92, 88, 76, 85, 90, 82, 78, 95, 72, 88],
|
|
||||||
"labels": ["张三", "李四", "王五", "赵六", "钱七", "孙八", "周九", "吴十", "郑明", "王芳"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
0.剧情 1.喜剧 2.科幻 3.悬疑 4.动作
|
||||||
|
5.爱情 6.动画 7.犯罪 8.奇幻 9.纪录
|
||||||
|
```
|
||||||
|
注:一部电影一个类别
|
||||||
|
|
||||||
|
**要求**:
|
||||||
|
1. 独立完成
|
||||||
|
2. 可参考 gitea 中的模板文件
|
||||||
|
3. 禁止使用豆包等大模型工具
|
||||||
|
4. 完成后提交到 Gitea 仓库 final-practice
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 二、数据采集
|
||||||
|
|
||||||
|
爬取豆瓣电影 Top250 前 50 部电影信息,包含电影名称、主演、短评。数据保存为 `movies.json`。
|
||||||
|
|
||||||
|
JSON 字段示例:
|
||||||
|
```json
|
||||||
|
{"rank": 1, "title": "肖申克的救赎", "actors": "蒂姆·罗宾斯 / 摩根·弗里曼", "quote": "希望让人自由。"}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三、数据处理与标注
|
||||||
|
|
||||||
|
读取 `movies.json`,整理出短评部分。并且使用 label-studio 进行数据标注。
|
||||||
|
|
||||||
|
操作要点:
|
||||||
|
- 过滤 `quote` 字段为空的电影
|
||||||
|
- 将待标注数据导入 label-studio
|
||||||
|
- 给每条短评标注 10 个类别中**最显著的一个**
|
||||||
|
- 导出标注结果
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 四、模型训练
|
||||||
|
|
||||||
|
使用标注的数据,使用 MLP 模型进行训练。获取训练时候的 loss 和 precision 两个数据,分别保存为 `loss.csv` 和 `predictions.csv` 两个文件。
|
||||||
|
|
||||||
|
操作要点:
|
||||||
|
- 用 `TfidfVectorizer` 提取文本特征
|
||||||
|
- 划分训练集 / 验证集
|
||||||
|
- 训练 MLP 模型并记录 loss
|
||||||
|
- 预测测试集并计算 precision
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 五、可视化编程
|
||||||
|
|
||||||
|
基于 `loss.csv` 和 `predictions.csv` 绘制 2 张图。
|
||||||
|
|
||||||
|
操作要点:
|
||||||
|
- 图 1:loss 曲线(横轴 epoch,纵轴 loss,含训练集和验证集)
|
||||||
|
- 图 2:10 个类别的预测分布柱状图
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 六、提交规范
|
||||||
|
|
||||||
|
### 6.1 必交文件
|
||||||
|
|
||||||
|
```
|
||||||
|
学号_姓名/
|
||||||
|
├── movies.json
|
||||||
|
├── quotes_processed.txt
|
||||||
|
├── process_stats.json
|
||||||
|
├── predictions.csv
|
||||||
|
├── my_labels.csv
|
||||||
|
├── report.md
|
||||||
|
└── images/
|
||||||
|
├── wordcloud.png
|
||||||
|
└── category_bar.png
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
Reference in New Issue
Block a user