首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python开发LR、SVM、DT、HistGB及XGBoost多模型对比实现学生抑郁风险预测|附AI智能体、代码和数据

Python开发LR、SVM、DT、HistGB及XGBoost多模型对比实现学生抑郁风险预测|附AI智能体、代码和数据

作者头像
拓端
发布2026-07-22 14:32:54
发布2026-07-22 14:32:54
200
举报
文章被收录于专栏:拓端tecdat拓端tecdat
封面
封面

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

——Na Yu

内容提要

  • 基于502条学生样本,用LR、SVM、DT、HistGB、XGBoost五模型比对学生抑郁风险预测表现。
  • 通过卡方检验与探索性分析锁定学习压力、低睡眠叠加高压力、不健康饮食等关键驱动因子。
  • 逻辑回归综合最优(准确率0.9801、召回率1.0),剔除冗余性别特征后准确率进一步提升至0.9826。
  • 将建模经验沉淀为对话式AI智能体,把数据清洗—特征选择—模型训练—效果评估链路封装复用。

关于分析师

图片
图片

Na Yu

学生心理健康数据挖掘领域分析师

擅长Python深度学习、数据采集与处理以及SQL

正文

摘要

中文摘要:本文回答以下四个核心问题——(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 数据集字段含义

特征名称

类型

含义

Gender

string

生理性别(Male/Female)

Age

int64

实际年龄

AcademicPressure

int64

学习压力(1-5,越大压力越大)

StudySatisfaction

int64

学习满意度(1-5,越大越满意)

SleepDuration

string

睡眠时长区间

DietaryHabits

string

饮食健康状况(Healthy/Moderate/Unhealthy)

SuicidalThought

string

是否有自杀念头(Yes/No)

StudyHours

int64

学习时长

FinancialStress

int64

经济压力(1-5,越大压力越大)

FamilyHistory

string

家族精神病史(Yes/No)

Depression

string

是否抑郁(Yes/No)

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

属性

数量

占比(%)

Gender

502

100.00

Age

502

100.00

AcademicPressure

502

100.00

StudySatisfaction

502

100.00

SleepDuration

502

100.00

DietaryHabits

502

100.00

SuicidalThought

502

100.00

StudyHours

502

100.00

FinancialStress

502

100.00

FamilyHistory

502

100.00

Depression

502

100.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%。不健康饮食是重要风险因子,且性别差异在不同饮食背景下表现不同。

低睡眠高压力叠加

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

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

点击标题查阅往期内容

以下是为您整理的关于逻辑回归(LR)、支持向量机(SVM)、决策树(DT)、直方图梯度提升(HistGB)及XGBoost模型的精选文章链接,涵盖了从理论原理到跨行业实战应用的丰富案例。

📊 模型综合应用与对比

  1. Python+AI提示词糖尿病预测融合模型:伯努利朴素贝叶斯、逻辑回归、决策树、随机森林、支持向量机SVM应用[9]
    • 核心看点:这是一个非常典型的多模型对比与融合案例。文章基于真实的医疗数据集,系统性地对比了逻辑回归(LR)、决策树(DT)、支持向量机(SVM)等算法的性能,并最终通过融合策略提升糖尿病预测的准确率,非常适合初学者理解不同模型的特点[9]。
  2. 银行信贷风控专题:Python、R 语言机器学习数据挖掘应用实例合集:xgboost、决策树、随机森林、贝叶斯等[8]
    • 核心看点:该专题合集包含了XGBoost、决策树等多种模型在金融风控领域的实战应用。例如,在汽车贷款违约预测项目中,通过细致的特征工程和超参数调优,XGBoost模型的F1分数从0.01提升至0.8以上,展示了模型在解决数据不平衡问题上的强大能力[8]。

XGBoost与梯度提升深度解析

  1. 视频讲解:XGBoost梯度提升树原理及用Python对房价等数据集多案例应用分析[2]
    • 核心看点:用非常通俗易懂的比喻(如“班主任打分”)讲解了XGBoost的核心原理,并提供了详细的代码示例。文章还清晰对比了XGBoost与随机森林的差异,是快速入门和深入理解XGBoost的优质资源[2]。
  2. 视频讲解:CatBoost、梯度提升 (XGBoost、LightGBM)对心理健康数据、交通流量及股票价格预测研究[1]
    • 核心看点:将梯度提升家族模型(包括XGBoost)应用于职场发展、城市交通、消费趋势等多元场景,体现了模型良好的跨领域适应性。文中关于处理缺失值和特征工程的思路具有很高的参考价值[1]。

🔬 前沿融合与可解释性

  1. Python电力负荷预测:LSTM、GRU、DeepAR、XGBoost、Stacking、ARIMA与SHAP可解释性的研究[10]
    • 核心看点:展示了如何将XGBoost用于模型集成,并利用SHAP工具进行可解释性分析,清晰地揭示每个基础模型在组合中的贡献度,对于追求模型透明度和理解模型决策逻辑的用户非常有帮助[10]。
  2. DeepSeek与LangGraph共享单车需求数据预测:LSTM与XGBoost多模型融合方法及Streamlit可视化应用|附数据代码[5, 6]
    • 核心看点:一个完整的端到端项目,融合了LSTM和XGBoost等模型预测共享单车需求,并集成了LangGraph进行工作流编排和Streamlit进行可视化,非常适合学习如何将多种技术整合到一个实际应用中[5, 6]。

💎 总结与提示

以上文章链接均有效,您可以根据兴趣点击阅读。通常,在这类公众号文章的末尾,会提示通过回复特定关键词(如“领资料”)来免费获取文中提及的完整代码、数据集或PDF报告1, 2, 8, 9。

希望这些从基础对比到高级应用的链接能满足您的需求。如果您对某个特定模型(如SVM的核技巧决策树的剪枝策略)有更深入的研究需求,我可以为您进一步筛选更专门的资料。

经济压力梯度

不同经济压力抑郁堆叠图
不同经济压力抑郁堆叠图

随经济压力从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.8543

0.8625

0.8625

0.8625

HistGB

0.9470

0.9500

0.9500

0.9500

SVM

0.9735

0.9634

0.9753

0.9875

逻辑回归

0.9801

0.9639

0.9816

1.0000

XGBoost

0.9536

0.9620

0.9560

0.9500

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

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

表5 特征选择对比验证

特征集

Accuracy

Precision

Recall

F1分数

X_1(含性别)

0.9801

0.9639

1.0000

0.9816

X_s(剔除性别)

0.9826

0.9642

1.0000

0.9827

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

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

标准答案:召回率1.0仅表示验证集中抑郁样本全部被识别,但需结合精确率看误报

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

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

总结

核心问题与解决方案

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

解决方案:通过探索性分析与卡方检验锁定学习压力、低睡眠叠加高压力(抑郁比例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为本文完整建模流程示意。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 拓端数据部落 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 📊 模型综合应用与对比
  • ⚡ XGBoost与梯度提升深度解析
  • 🔬 前沿融合与可解释性
  • 💎 总结与提示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档