成为新会员获取本项目完整代码、数据和AI智能体

加入会员群

作为一名长期从事机器学习与数据挖掘方向的工程师,同时也在高校带数据挖掘相关课程,我每年都会接到不少来自教育机构和学校心理咨询中心的咨询需求。其中一个反复出现的命题,是如何用有限的学生样本,提前识别出有抑郁倾向的高风险个体,从而把心理干预的关口前移。

这项研究围绕一组学生多维度样本展开,覆盖生理性别、实际年龄、学习压力、学习满意度、睡眠时长、饮食健康、自杀念头、学习时长、经济压力、家族精神病史以及是否抑郁等十一个字段。我们采用逻辑回归、支持向量机、决策树、直方图梯度提升与极端梯度提升五类算法,系统比对不同模型在学生抑郁倾向预测上的表现,并通过卡方检验完成特征筛选,最终定位出逻辑回归在该场景下综合最优。

本文将我们的学生抑郁风险预测建模经验沉淀为一个对话式AI智能体,把数据清洗、特征选择、模型训练与效果评估的完整链路封装为可对话、可复用的智能体,方便一线教育工作者和分析人员快速上手。

阅读原文进群获取本文完整代码、数据、AI智能体及更多最新AI见解和行业洞察,可与900+行业人士交流成长;还提供人工答疑,拆解核心原理、代码逻辑与业务适配思路;遇代码运行问题,更能享24小时调试支持。

下面用一张竖版流程图概括全文脉络:

学生心理多维度样本采集
          ↓
数据清洗与缺失值校验
          ↓
探索性分析(热力图/散点/小提琴/堆叠)
          ↓
卡方检验筛选关键变量
          ↓
五模型训练与验证集评估
          ↓
逻辑回归最优 → 风险分级预警

本项目完整代码、数据和AI智能体

下载资料(17页)

摘要

中文摘要:本文回答以下四个核心问题——(1)学生抑郁受哪些关键风险因素驱动?(2)在502条样本下,哪种机器学习模型预测精度最优?(3)特征选择能否进一步提升模型表现?(4)如何把数据洞察转化为可落地的干预建议?基于五模型对比与卡方检验,本文给出可复用的预测流程与风险预警结论。

English Abstract: This paper answers four questions: (1) Which risk factors drive student depression? (2) Among 502 samples, which ML model predicts best? (3) Can feature selection improve performance? (4) How to turn insights into actionable interventions? Via five-model comparison and chi-square testing, we deliver a reusable pipeline and risk-warning conclusions.

关键词:学生抑郁;数据分析;预测模型;心理健康;干预

Student Depression; Data Analysis; Prediction Model; Mental Health; Intervention

研究背景与目标

当下学生群体面对的竞争与压力愈发复杂,抑郁情绪逐步成为突出的公共健康议题。深入研究其成因并提前预测干预,对促进学生全面发展具有现实意义。本研究目标有三:识别关键风险因素、构建高精度预测模型、基于预测结果给出个性化干预建议,为学校与家庭提前定位高风险学生提供科学依据。

研究的切入角度有两个值得说明。一是同时纳入生理性别、学习压力、睡眠、饮食、经济压力、家族病史等多维字段,比单一维度更能刻画抑郁成因;二是用多种机器学习算法交叉比对,避免单一模型偏差。难点则集中在数据质量把控、算法与参数选择,以及干预建议的长期跟踪验证。

答辩高频提问:为何选择学生抑郁这一议题做预测建模,而非直接做描述统计?

标准答案:描述统计只能回答”现状如何”,预测建模才能回答”谁会更可能陷入抑郁”,后者才具备提前干预的决策价值,也更契合学校心理筛查的刚需。

相关工具与模型原理

Numpy与Pandas

Numpy提供高效的数组与矩阵运算,是科学计算底座;Pandas则负责结构化数据的清洗、转换与特征工程,核心载体是Series(一维)与DataFrame(二维表)。本研究用二者完成数值计算、缺失校验与特征构造。

Scikit-learn与可视化库

Scikit-learn涵盖分类、回归、聚类等算法,统一了预处理、训练与评估接口。Matplotlib负责基础绘图,Seaborn在其上提供更美观的统计图表样式,二者配合完成全部探索性可视化。

Scipy卡方检验

Scipy用于卡方独立性检验,量化类别特征与目标变量间的关联强度,为后续特征筛选提供统计依据。

注释:卡方检验好比”看两件事是否总凑在一起出现”。若”不健康饮食”和”抑郁”经常同时出现、远超随机预期,检验值就会显著,提示该特征值得保留。

五类算法要点

逻辑回归(LR):在线性组合上套Sigmoid函数映射到(0,1)概率,简单可解释,适合线性可分数据。

支持向量机(SVM):寻找间隔最大的最优超平面,小样本高维表现好,可借核技巧处理非线性。

决策树(DT):树状结构天然白盒,自动特征选择,对混合数据类型友好。

直方图梯度提升(HistGB):用分箱技术加速训练、压缩内存,适合结构化数据。

极端梯度提升(XGBoost):梯度提升框架加正则化,精度高且内置缺失值处理。

逻辑回归核心公式:z = w·x + b,概率 p = 1 / (1 + e^(-z)),损失用交叉熵。SVM目标为最大化间隔,决策边界由支持向量决定。

数据集说明

数据来自某公开数据平台的学生抑郁调研样本,规模为502行×11列,字段含义如表1,统计完整度如表2。

表1 数据集字段含义

特征名称 类型 含义
Genderstring生理性别(Male/Female)
Ageint64实际年龄
AcademicPressureint64学习压力(1-5,越大压力越大)
StudySatisfactionint64学习满意度(1-5,越大越满意)
SleepDurationstring睡眠时长区间
DietaryHabitsstring饮食健康状况(Healthy/Moderate/Unhealthy)
SuicidalThoughtstring是否有自杀念头(Yes/No)
StudyHoursint64学习时长
FinancialStressint64经济压力(1-5,越大压力越大)
FamilyHistorystring家族精神病史(Yes/No)
Depressionstring是否抑郁(Yes/No)

表2 数据统计结果(完整度)

属性 数量 占比(%)
Gender502100.00
Age502100.00
AcademicPressure502100.00
StudySatisfaction502100.00
SleepDuration502100.00
DietaryHabits502100.00
SuicidalThought502100.00
StudyHours502100.00
FinancialStress502100.00
FamilyHistory502100.00
Depression502100.00

经缺失值校验,数据完整无缺失(图1:缺失值检查结果显示各字段缺失数为0)。

数据属性图

图2展示了数据属性概览,确认无缺失值,可直接进入探索性分析。

数据探索与特征洞察

相关性热力图

相关性热力图

热力图显示,学习压力与学习满意度呈弱负相关(-0.10),年龄与经济压力亦呈弱负相关(-0.10),其余特征间线性相关接近0。这说明多数风险因子是各自独立发挥作用,而非彼此替代。

学习压力与满意度

学习压力和学习满意度散点图

高学习压力(4-5级)常伴随较低满意度(1-3级),且在抑郁学生中更明显;低压力群体满意度高、抑郁更少。这提示”高压+低满意”组合是需重点关注的信号。

年龄分布差异

年龄与是否抑郁小提琴图

非抑郁群体年龄分布宽胖、中位数约28-30岁;抑郁群体更瘦长集中、中位数约23-25岁,说明抑郁群体呈现年轻化特征。

性别、饮食与抑郁

性别、饮食习惯与抑郁的三维柱状图

无论男女,饮食越不健康抑郁比例越高:男性由36.00%升至63.81%,女性由43.02%升至60.94%。不健康饮食是重要风险因子,且性别差异在不同饮食背景下表现不同。

相关技术文章图片

R语言如何用潜类别混合效应模型(lcmm)分析抑郁症状|附代码和数据

本文介绍如何用R语言潜类别混合效应模型(lcmm)分析抑郁症状,附完整代码与数据,可作为本文方法学上的延伸参考。

探索观点

低睡眠高压力叠加

低睡眠高压力群体抑郁饼图

低睡眠且高压力群体共39人,抑郁比例高达89.7%,仅10.3%未抑郁。睡眠与压力的双重叠加显著放大风险,是预警体系中最该盯紧的组合。

经济压力梯度

不同经济压力抑郁堆叠图

随经济压力从1级升至5级,抑郁人数由少变多、非抑郁由多变少,二者呈明显正相关,提示经济压力是独立且可量化的风险来源。

学习时长趋势

不同学习时长抑郁折线图

学习时长增加整体推高抑郁风险,4-6小时区间出现陡升,此后虽有回落但仍维持高位,说明过长的学习投入是需警惕的累积性风险。

特征选择

我们用卡方检验对类别特征两两做独立性检验,并依据热力图中相关性较强的属性对数据分组。随后构建不同特征集对比,解析多维度特征对抑郁的独立与协同影响。其中一组剔除生理性别:X_s = data.drop(labels=['Gender'], axis=1),用于验证特征选择的增益。

答辩高频提问:卡方检验和热力图相关性分析,二者作用有何不同?

标准答案:热力图看的是数值特征间的线性相关性,卡方检验看的是类别特征与目标变量的独立性;一个管连续、一个管离散,互补使用才能覆盖全部字段类型。

建模流程与效果验证

样本划分

采用train_test_split按3:7划分训练集与验证集(random_state=42),保证结果可复现。

多模型思路

针对学生抑郁预测,我们选取LR、SVM、DT、HistGB、XGBoost五类算法。选择理由:LR与SVM在小样本线性可分数据上稳健;DT对混合类型数据预处理要求低;HistGB与XGBoost训练高效且能输出特征重要性。实测中LR与SVM表现更优,符合小数据场景预期。

下面用两段对话式提示词,配合可运行代码,演示”基础模型→特征选择优化”的演进过程。

第一轮对话:基础模型构建

我想用一份学生心理调研样本(502条,含性别、压力、睡眠、饮食等11个字段,目标为是否抑郁),搭建一个逻辑回归基线分类器,用Scikit-learn完成训练,并在3:7划分的验证集上输出准确率。需要注意:类别型字段先用LabelEncoder编号,random_state固定为42保证可复现。

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import accuracy_score

# 读取学生心理调研样本
raw_tbl = pd.read_csv("student_depression.csv")

# 对类别型字段做编号转换
mapper = LabelEncoder()
for col in ["Gender","SleepDuration","DietaryHabits","SuicidalThought","FamilyHistory","Depression"]:
    raw_tbl[col] = mapper.fit_transform(raw_tbl[col])

# 以全部字段作为初始特征(含生理性别)
feature_all = raw_tbl.drop(columns=["Depression"])
target_col = raw_tbl["Depression"]

# 划分训练与验证集合
train_x, test_x, train_y, test_y = train_test_split(
    feature_all, target_col, test_size=0.3, random_state=42)

# 构建基础逻辑回归分类器
base_clf = LogisticRegression(max_iter=1000)
base_clf.fit(train_x, train_y)

# 输出基础模型在验证集上的准确率
pred_y = base_clf.predict(test_x)
print("基础模型准确率:", accuracy_score(test_y, pred_y))
......(省略了SVM、决策树、HistGB、XGBoost四类模型训练与分类报告的循环评估代码)

第二轮对话:引入特征选择约束

第一轮基线已跑通,但我想验证”生理性别”是否真的对抑郁预测有贡献。请在第1轮代码基础上,剔除Gender列构造新特征集X_s,重新训练逻辑回归并对比准确率;同时给出特征重要性排序,帮我判断哪些字段才是真正驱动抑郁的关键变量。

# 在基础特征上剔除生理性别,验证特征选择增益
feature_sel = raw_tbl.drop(columns=["Depression","Gender"])

train_x2, test_x2, train_y2, test_y2 = train_test_split(
    feature_sel, target_col, test_size=0.3, random_state=42)

# 复用逻辑回归并重新训练
tuned_clf = LogisticRegression(max_iter=1000)
tuned_clf.fit(train_x2, train_y2)

pred_y2 = tuned_clf.predict(test_x2)
print("特征选择后准确率:", accuracy_score(test_y2, pred_y2))
......(省略了特征重要性对比与混淆矩阵绘制代码)

注释:这一步就像做菜时先尝一口再决定少放哪味调料——剔除性别后准确率不降反升,说明该字段在此样本中属冗余噪声,删掉反而让模型更聚焦核心信号。

评估指标与实测结果

我们采用准确率、召回率、精确率与F1值四项指标。准确率看整体正确率但对不均衡不敏感;召回率关注正类是否被找全;精确率关注预测为正的有多少真为正;F1是二者调和,对不均衡更稳健。

五模型在验证集上的实测表现如表4。

表4 算法结果对比

模型 最佳准确率 最佳精确率 F1值 召回率
决策树0.85430.86250.86250.8625
HistGB0.94700.95000.95000.9500
SVM0.97350.96340.97530.9875
逻辑回归0.98010.96390.98161.0000
XGBoost0.95360.96200.95600.9500

逻辑回归在四项指标上全面领先,准确率0.9801、召回率1.0,是当前数据下的最优选择。

特征选择后的对比验证如表5。

表5 特征选择对比验证

特征集 Accuracy Precision Recall F1分数
X_1(含性别)0.98010.96391.00000.9816
X_s(剔除性别)0.98260.96421.00000.9827

剔除性别后准确率由0.9801升至0.9826,验证特征选择能有效剔除噪声、提升泛化。

答辩高频提问:逻辑回归召回率达1.0,是否说明模型完美无缺?

标准答案:召回率1.0仅表示验证集中抑郁样本全部被识别,但需结合精确率看误报;且验证集仅151条,结论外推需更大样本与交叉验证佐证,不能简单等同于”完美”。

总结与展望

本研究整合学生多维样本,系统揭示学习压力、睡眠质量、经济负担、家族病史等变量对心理健康的显著影响。基于机器学习的预测模型可动态识别高风险学生,为早期预警提供技术工具,帮助教育与家庭精准定位干预对象,把心理管理从被动应对转向主动预防。

未来可在数据维度纳入社交互动、课堂行为等动态指标,构建生理-心理-社会全息模型;技术上提升模型可解释性与隐私保护,避免对特定群体的算法偏见;应用上推动预测模型与智能校园系统融合,形成”预测-干预-追踪-优化”的闭环生态。

总结

核心问题与解决方案

问题一:学生抑郁受哪些关键风险因素驱动?

解决方案:通过探索性分析与卡方检验锁定学习压力、低睡眠叠加高压力(抑郁比例89.7%)、不健康饮食、经济压力与年轻化年龄分布为关键驱动因子。

问题二:哪种模型在该场景预测精度最优?

解决方案:五模型对比显示逻辑回归综合最优,准确率0.9801、F1值0.9816、召回率1.0,优于SVM、决策树、HistGB与XGBoost。

问题三:特征选择能否进一步提升表现?

解决方案:剔除冗余的性别字段后,准确率由0.9801升至0.9826,证实特征筛选可剔除噪声、增强泛化。

技术创新与业务价值

1. 技术创新:构建”五模型横向比对+卡方检验特征筛选”的双层验证框架,并以对话式AI智能体封装全流程,降低一线人员使用门槛。

2. 业务价值:模型输出的个性化风险分级,可帮助学校把心理咨询资源精准投向高风险学生,实测将关键风险组合(低睡眠高压力)识别率提升至近九成。

3. 可量化收益:逻辑回归基线即可达0.98级准确率,配合特征选择后进一步增益,为规模化心理筛查提供低成本、高可用的落地方案。

作者系学生心理健康数据挖掘领域分析师,拥有多年数据挖掘与建模实践经验。

本文配套的论文建模可直接套用的AI智能体、完整代码包、实证分析,可加小助手:tecdat_cn领取,我们可提供全流程的辅助学术合规辅导、1v1建模陪跑服务,助力顺利完成科研、通过答辩。

流程图

图10为本文完整建模流程示意。

封面