Files
KTData/README.md

165 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# KT 常用数据集分析
一个用于分析知识追踪Knowledge Tracing, KT相关数据集的项目。包含多个常用教育数据集的分析 Notebook涵盖 ASSISTment 平台和 EdNet 平台的学生在线学习数据。
## 项目结构
```
KTData/
├── README.md # 项目文档(本文件)
├── pyproject.toml # 项目配置和依赖管理
├── uv.lock # 依赖锁定文件
├── assist09_analysis.ipynb # ASSISTment2009 数据集分析
├── assist12_analysis.ipynb # ASSISTment2012 数据集分析
├── assist15_analysis.ipynb # ASSISTment2015 数据集分析
├── assist17_analysis.ipynb # ASSISTment2017 数据集分析
├── ednet_kt1.ipynb # EdNet KT1 数据集分析
└── data/ # 数据集存放目录
├── assistment09/ # ASSISTment 2009 数据
├── assistment12/ # ASSISTment 2012 数据
├── assistment15/ # ASSISTment 2015 数据
├── assistment17/ # ASSISTment 2017 数据
└── EdNet/ # EdNet 数据集
├── EdNet-Contents/ # 问题元数据等
└── EdNet-KT1/ # 学生答题记录
```
## 包含的数据集
### 1. ASSISTment 2009Skill Builder
- **文件大小**: 61 MB
- **数据量**: ~26,688 条问题记录
- **学生数量**: 4,217
- **技能数量**: 123
- **特点**: 包含主问题和支撑问题,记录详细的学生交互过程
- **关键字段**:
- `order_id`: 问题日志ID
- `correct`: 答题是否正确0/1
- `original`: 问题类型1=主问题, 0=支撑问题)
- `skill_id/skill_name`: 技能标识
- `hint_count`: 学生请求的提示次数
- `ms_first_response`: 首次响应时间
- `tutor_mode`: 导师模式或测试模式
### 2. ASSISTment 2012-2013
- **文件大小**: 2.9 GB
- **学年**: 2012-2013
- **特点**: 在 2009 的基础上增加了学生情绪状态的置信度预测
- **关键字段**:
- `problem_log_id`: 问题日志ID
- `skill`: 技能名称
- `problem_id`: 问题ID
- `correct`: 答题是否正确0/1
- `tutor_mode`: 导师/测试模式
- `type`: 问题集类型LinearSection, MasterySection 等)
- `Average_confidence(*)`: 情绪状态置信度FRUSTRATED, CONFUSED, CONCENTRATING, BORED
### 3. ASSISTment 2015
- **文件大小**: 18 MB
- **学年**: 2015-2016
- **数据量**: 100 个最常用的技能构建器
- **特点**: 仅包含主问题数据,字段相对简化
- **关键字段**:
- `user_id`: 学生ID
- `log_id`: 作答记录ID
- `sequence_id`: 习题集ID代表技能
- `correct`: 答题是否正确0/1
### 4. ASSISTment 2017
- **文件大小**: 524 MB
- **年份**: 2017
- **特点**: 包含 82 个特征列,最详细的特征工程数据
- **关键字段**:
- `studentId`: 学生ID
- `problemId`: 问题ID
- `skill`: 技能名称
- `correct`: 答题是否正确
- `InferredGender`: 推断的学生性别
- `AveCorrect`: 平均正确率
- `AveKnow`: 平均知识水平
- 多种情绪预测值Bored, Concentrating, Confused, Frustrated, Off Task, Gaming
### 5. EdNet KT1
- **数据来源**: EdNet 在线教育平台
- **特点**: 目前最大规模的学生交互数据
- **学生数据**:
- 学生作答数据以 CSV 文件形式存储每个学生一个文件u1.csv, u2.csv 等)
- 包含学生的完整作答序列
- **关键字段**:
- `timestamp`: 题目被给出的时间Unix 时间戳,毫秒)
- `question_id`: 问题ID格式q{integer}
- `solve_id`: 题组捆绑包ID
- `user_answer`: 学生提交的答案a/b/c/d
- `elapsed_time`: 解答时间(毫秒)
- **问题元数据**:
- `correct_answer`: 正确答案
- `part`: 题目部分编号1-7
- `tags`: 专家标注的技能标签
- `deployed_at`: 问题上线时间
## 数据特征对比
| 特征 | 2009 | 2012 | 2015 | 2017 | EdNet |
|-----|------|------|------|------|-------|
| 文件大小 | 61 MB | 2.9 GB | 18 MB | 524 MB | 可变 |
| 包含支撑问题 | ✓ | ✓ | ✗ | ✓ | ✗ |
| 情绪预测 | ✗ | ✓ | ✗ | ✓ | ✗ |
| 学生数量 | 4,217 | 大规模 | 未统计 | 大规模 | 多变 |
| 字段数量 | ~30 | ~40 | 4 | 82 | 5 |
| 技能标注 | 详细 | 详细 | 简化 | 详细 | 分级标签 |
## 环境配置
### 前置要求
- Python 3.12 或更高版本
- UV 包管理工具([安装指南](https://docs.astral.sh/uv/getting-started/installation/)
### 快速开始
```bash
# 同步本地依赖包
uv sync
# 启动 Jupyter Lab
uv run jupyter lab
# 或启动 Jupyter Notebook
uv run jupyter notebook
```
### 依赖包
项目使用以下主要依赖包:
- **jupyterlab** (≥4.4.10): 交互式数据分析环境
- **pandas** (≥2.3.3): 数据处理和分析
- **matplotlib** (≥3.9.4): 数据可视化
- **tqdm** (≥4.67.1): 进度条显示
## 使用说明
### 运行 Notebook
所有分析代码都包含在 Jupyter Notebook 文件中:
1. **assist09_analysis.ipynb**: ASSISTment 2009 数据集的全面分析
2. **assist12_analysis.ipynb**: ASSISTment 2012 数据集分析,包括情绪状态分析
3. **assist15_analysis.ipynb**: ASSISTment 2015 数据集分析
4. **assist17_analysis.ipynb**: ASSISTment 2017 数据集分析,大量特征工程
5. **ednet_kt1.ipynb**: EdNet KT1 数据集分析
### 主要分析内容
- 数据集结构和字段说明
- 数据统计信息(学生数、问题数、技能数等)
- 答题正确率分析
- 学生学习行为分析
- 技能相关性分析
- 时间序列分析
## 数据获取
- **ASSISTment 数据集**: [https://sites.google.com/site/assistmentsdata/datasets](https://sites.google.com/site/assistmentsdata/datasets)
- **EdNet 数据集**: [https://github.com/riiid/ednet](https://github.com/riiid/ednet)