高校自主招生数据分析项目

高校自主招生数据分析项目

本项目针对高校自主招生过程中的报名、考试和录取三个阶段进行数据分析,通过数据挖掘和机器学习方法探索招生过程中的关键因素和规律,为招生决策提供数据支持。

项目概述

项目分为四个主要阶段:

  1. 数据收集与预处理:生成合成数据并进行清洗、转换和规范化
  2. 数据分析与可视化:进行描述性统计分析并创建可视化图表
  3. 模型构建与优化:使用机器学习方法构建预测模型
  4. 结果展示与报告撰写:生成分析报告和交互式仪表盘

目录结构

高校招生数据分析/
├── data/                      # 数据目录
│   ├── raw/                   # 原始数据
│   └── processed/             # 处理后的数据
│       ├── analysis_results/  # 分析结果
│       ├── models/            # 模型文件
│       └── visualizations/    # 可视化图表
├── notebooks/                 # Jupyter笔记本(可选)
├── reports/                   # 生成的报告
├── src/                       # 源代码
│   ├── data_collection/       # 数据收集脚本
│   ├── preprocessing/         # 数据预处理脚本
│   ├── analysis/              # 数据分析脚本
│   ├── visualization/         # 数据可视化脚本
│   ├── models/                # 模型训练脚本
│   ├── reports/               # 报告生成脚本
│   └── main.py                # 主程序
└── README.md                  # 项目说明

核心功能

  1. 数据生成:创建包含学生信息、报名信息、考试成绩和录取结果的合成数据
  2. 数据预处理:处理缺失值、异常值检测和数据清洗
  3. 数据分析:描述性统计分析,包括录取率、成绩分布、专业偏好等分析
  4. 统计分析:相关性分析、假设检验(t检验、卡方检验、方差分析)和生存分析
  5. 数据可视化:使用Matplotlib、Seaborn和Plotly生成静态和交互式图表
  6. 模型训练:实现逻辑回归、决策树和随机森林模型,进行模型评估和超参数优化
  7. 报告生成:自动生成分析报告
  8. 交互式仪表盘:使用Dash和Plotly创建交互式数据可视化仪表盘

技术栈

  • 编程语言:Python 3.8+
  • 数据处理:Pandas, NumPy
  • 数据库:SQLite
  • 数据可视化:Matplotlib, Seaborn, Plotly
  • 统计分析:SciPy, StatsModels, Lifelines
  • 机器学习:Scikit-learn
  • Web应用:Dash

使用说明

环境设置

  1. 克隆项目
  2. 安装依赖包
pip install -r requirements.txt

运行项目

运行主程序以执行整个工作流程:

python src/main.py

或者单独运行各个模块:

# 生成合成数据
python src/data_collection/generate_synthetic_data.py

# 数据预处理
python src/preprocessing/data_preprocessing.py

# 数据分析
python src/analysis/data_analysis.py

# 统计分析
python src/analysis/statistical_analysis.py

# 数据可视化
python src/visualization/data_visualization.py

# 模型训练
python src/models/model_training.py

# 生成报告
python src/reports/report_generator.py

启动交互式仪表盘

python src/visualization/dashboard.py

启动后,在浏览器中访问 http://127.0.0.1:8050/ 查看仪表盘。

分析结果

分析结果包括:

  1. 招生概况:申请人数、录取人数、整体录取率等基本统计信息
  2. 人口统计分析:按性别、省份、学校类型等维度的分布和录取率分析
  3. 学术表现分析:各科目成绩分布、成绩与录取结果的关系
  4. 专业偏好分析:热门专业排名、各专业录取率
  5. 录取因素分析:影响录取结果的关键因素及其重要性
  6. 统计分析结果
    • 相关性分析:确定影响录取结果的关键特征
    • 假设检验:验证不同群体在成绩和录取率方面的显著性差异
    • 生存分析:分析从申请到录取过程中的时间因素影响
  7. 预测模型:基于历史数据构建的录取结果预测模型及其性能评估

仪表盘功能

交互式仪表盘包含两个主要选项卡:

  1. 总体概览:显示招生总体数据、录取率分析、成绩分布、录取因素和专业偏好
  2. 统计分析:提供相关性矩阵、关键特征与录取结果的相关性、假设检验结果和生存分析

依赖包

项目依赖以下Python包:

pandas>=1.3.0
numpy>=1.20.0
matplotlib>=3.4.0
seaborn>=0.11.0
plotly>=5.0.0
scikit-learn>=1.0.0
dash>=2.0.0
dash-bootstrap-components>=1.0.0
tabulate>=0.8.0
markdown>=3.3.0
joblib>=1.0.0
scipy>=1.7.0
ipykernel>=6.0.0
jupyter>=1.0.0
statsmodels>=0.13.0
lifelines>=0.27.0

更新日志

2025-05-7

  • 完成项目基础框架
  • 实现数据生成、预处理、分析和可视化
  • 开发模型训练和报告生成功能
  • 创建交互式仪表盘

2025-05-7

  • 添加统计分析模块,实现相关性分析、假设检验和生存分析
  • 扩展交互式仪表盘,增加统计分析选项卡
  • 改进报告生成器,集成统计分析结果
  • 更新主程序工作流,集成新模块

2025-05-7

  • 修复统计分析模块中的路径问题,将相对路径"…/…/data/“修改为项目内的正确相对路径"data/”
  • 修复报告生成器中的图像路径问题,将"images/images/“修改为正确的"images/”
  • 更新仪表盘启动命令,从app.run_server(debug=True)修改为app.run(debug=True)
  • 添加缺失的lifelines库到项目依赖
  • 优化文件保存方式,使用os.path.join替代字符串拼接,提高跨平台兼容性

2025-05-7:修正高考分数设置

会话主要目的

修正高校自主招生数据分析项目中的高考分数设置,使其符合实际高考情况。

完成的主要任务
  1. 修正高考总分:将原来的三科总分450分(语数外各150分)修改为更符合实际的高考总分750分(语数外各150分,加选考科目总分300分)。
  2. 增加选考科目:添加了物理、化学、生物、历史、地理、政治等选考科目,每科满分100分。
  3. 添加文理分科:根据实际高考情况,添加了文理分科设置,约55%的学生选择理科,45%的学生选择文科。
  4. 更新相关评分机制:调整了录取算法中的分数权重和评分标准,使其适应新的分数设置。
  5. 更新数据验证工具:修改数据验证逻辑,增加了对新增选考科目和文理分科的验证。
关键决策和解决方案
  1. 模拟文理分科:虽然部分省份已经实行新高考改革,但为了系统性,仍保留了传统的文理分科模式。
  2. 性别特征与学科表现:根据实际情况,在不同学科中设置了性别偏好系数,如男生在数学和物理上略有优势,女生在语文、英语和文科科目上略有优势。
  3. 使用实际分值区间:选考科目设置为满分100分,主科保持150分,使总分符合750分的实际情况。
  4. 保持数据一致性:确保所有依赖分数的计算逻辑(如录取概率、专业志愿录取等)都使用新的分数体系。
使用的技术栈
  • Python
  • Pandas
  • NumPy
  • Matplotlib
  • Seaborn
  • SQLite
  • SciPy(概率分布)
修改的文件
  1. 修改 src/data_collection/improved_synthetic_data.py - 更新高考分数生成逻辑
  2. 修改 src/data_collection/data_validator.py - 更新数据验证逻辑
  3. 运行更新 data/raw/data/processed/ 目录下的数据文件
  4. 更新 README.md - 添加本次会话总结
验证结果
  1. 高考总分平均分从290分左右提高到488分左右,符合实际高考750分满分的平均水平
  2. 文理科分布比例为57.7%理科、42.3%文科,符合预期设置
  3. 各科目分数分布呈正态分布,符合实际高考成绩分布特征
  4. 总体录取率为47.7%,与预期相符
  5. 不同特征与录取结果的相关性更加符合直觉,总分、政治成绩和竞赛获奖成为最相关的三个因素

项目会话总结

2025-05-7:改进数据生成模块

会话主要目的

改进高校自主招生数据分析项目的数据生成模块,使生成的合成数据更符合实际情况。

完成的主要任务
  1. 创建改进版数据生成模块:开发了更真实的数据生成脚本,考虑了多种现实因素,如省份人口分布、专业热度、性别偏好等。
  2. 开发数据验证工具:创建了专门的数据验证脚本,用于评估生成数据的真实性和合理性。
  3. 数据特征修正:调整了省份录取偏好、专业难度系数、学校类型影响等参数,使数据更符合现实。
  4. 数据分布优化:添加了更真实的分布模式,如使用Beta分布模拟报名时间集中在开始和截止日期前。
  5. 全流程验证:生成数据后,依次运行了预处理、分析、统计分析、模型训练和报告生成等模块进行全流程验证。
关键决策和解决方案
  1. 省份分布优化:根据实际人口比例和高考生源分布设置各省份权重。
  2. 专业选择性别偏好:为不同专业设置男女生偏好系数,使专业选择更符合现实。
  3. 录取算法改进:综合考虑总分(55%)、GPA(15%)、竞赛获奖(10%)、社会实践(5%)等因素,以及省份和专业难度系数。
  4. 异常值合理控制:在生成数据时设置合理的上下限,避免极端异常值。
  5. 真实性验证:开发专门验证工具,通过多维度分析评估数据真实性。
使用的技术栈
  • Python
  • Pandas
  • NumPy
  • Matplotlib
  • Seaborn
  • SQLite
  • SciPy (概率分布)
  • Scikit-learn (模型训练)
  • Lifelines (生存分析)
  • Dash (交互式仪表盘)
修改的文件
  1. 新增 src/data_collection/improved_synthetic_data.py - 改进的数据生成脚本
  2. 新增 src/data_collection/data_validator.py - 数据验证工具
  3. 运行更新 data/raw/data/processed/ 目录下的所有数据文件
  4. 更新 README.md - 添加项目会话总结

2025-05-7:优化高考分数与专业选择关系

会话主要目的

优化高校自主招生数据分析项目中高考分数与专业选择之间的关系,提高数据真实性和合理性。

完成的主要任务
  1. 完善文理分科与性别关联:添加了性别与文理分科的关联性,使得男生理科比例更高(65%),女生文科比例更高(55%)。
  2. 建立专业分类体系:将专业分为理工类、文商类和医学类,用于分析文理分科对专业选择的影响。
  3. 增加学科专业匹配度:在录取算法中引入学科专业匹配度因子,使文理分科与专业选择之间建立合理联系。
  4. 差异化录取概率:根据学生文理分科背景和所选专业类型,设置差异化的录取概率调整因子。
  5. 全流程验证:重新生成数据并运行完整的分析流程,验证修改的合理性。
关键决策和解决方案
  1. 学科专业匹配系数:理科学生选择理工类专业时录取概率增加8-10%,文科学生选择文商类专业录取概率增加6-10%。
  2. 跨学科报考惩罚:文科学生选择理工类专业录取概率降低8-10%,理科学生选择文商类专业录取概率降低5%。
  3. 医学专业特殊处理:对于医学类专业,理科学生有5-8%的优势,反映医学对理科背景的偏好。
  4. 建立专业分类:创建全局专业分类变量(TECH_MAJORS, ARTS_MAJORS, MEDICAL_MAJORS),便于代码维护和逻辑一致性。
  5. 保持数据一致性:确保录取逻辑中考虑学科专业匹配度的地方都使用相同的匹配系数。
使用的技术栈
  • Python
  • Pandas
  • NumPy
  • Matplotlib
  • Seaborn
  • SQLite
  • Scikit-learn (模型训练)
  • Dash (交互式仪表盘)
修改的文件
  1. 修改 src/data_collection/improved_synthetic_data.py - 添加文理分科与专业选择的关联
  2. 运行更新 data/raw/data/processed/ 目录下的数据文件
  3. 运行预处理、分析、统计分析、模型训练和报告生成等模块进行全流程验证
  4. 更新 README.md - 添加本次会话总结
验证结果
  1. 文理分科分布更合理:文理分科比例从之前的约58%:42%变为56%:44%,更符合实际
  2. 专业选择模式更贴近现实:理科学生更倾向于选择理工类专业,文科学生更倾向于选择文商类专业
  3. 模型预测性能提升:优化后的随机森林模型准确率达到57%,高于之前的结果
  4. 统计分析结果更显著:学校类型与录取结果的关联性从"不显著"变为"显著"(p = 0.0426)
  5. 竞赛获奖影响增强:竞赛获奖成为与录取结果相关性第二高的特征(0.1473),仅次于录取概率本身
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值