手机端视频网站模板下载,有哪些官网做的比较好的网站,网站备案主体授权书,传销公司做网站运营#x1f9d1; 博主简介#xff1a;曾任某智慧城市类企业算法总监#xff0c;目前在美国市场的物流公司从事高级算法工程师一职#xff0c;深耕人工智能领域#xff0c;精通python数据挖掘、可视化、机器学习等#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN… 博主简介曾任某智慧城市类企业算法总监目前在美国市场的物流公司从事高级算法工程师一职深耕人工智能领域精通python数据挖掘、可视化、机器学习等发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者提供AI相关的技术咨询、项目开发和个性化解决方案等服务如有需要请站内私信或者联系任意文章底部的的VX名片IDxf982831907 博主粉丝群介绍① 群内初中生、高中生、本科生、研究生、博士生遍布可互相学习交流困惑。② 热榜top10的常客也在群里也有数不清的万粉大佬可以交流写作技巧上榜经验涨粉秘籍。③ 群内也有职场精英大厂大佬可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本送真活跃粉丝助你提升文章热度。有兴趣的加文末联系方式备注自己的CSDN昵称拉你进群互相学习共同进步。 【机器学习案列】学生抑郁可视化及预测分析 一、数据获取与预处理1.1 导入分析库1.2 导入数据1.3 数据基本分析 二、数据可视化分析2.1 性别分布2.2 不同性别抑郁情况分布2.3 不同睡眠时长与抑郁情况的关系2.4 学习压力与抑郁的关系2.5 年龄分布与抑郁情况的关系2.6 其它多特征的组合显示 三、特征编码与数据标准化四、随机森林预测模型结论 在当今社会学生心理健康问题日益受到关注尤其是抑郁症。抑郁症不仅影响学生的学业成绩还可能对其身心健康造成长期影响。因此早期识别和预防学生抑郁症具有重要意义。本文将介绍如何使用可视化分析来探索学生抑郁数据并利用随机森林Random Forest, RF算法进行预测。
一、数据获取与预处理
1.1 导入分析库
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline
import warnings
warnings.filterwarnings(ignore)from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.model_selection import train_test_split
import seaborn as sns
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score,precision_score,recall_score1.2 导入数据
dfpd.read_csv(Depression Student Dataset.csv)
df.head(5)1.3 数据基本分析 从上面可以发现数据的shape为50210且没有缺失值的存在数据列分别表示性别、年龄、学习压力、学习满意度、睡眠时间、饮食习惯、是否有过自杀的念头、学习时间、经济压力、精神疾病家族史、是否抑郁。
二、数据可视化分析
2.1 性别分布 通过可视化分析我们可以首先了解数据集中学生的性别分布。
plt.figure(figsize(10, 6))
sns.countplot(datadf, xGender, palettepastel)
plt.title(性别分布, fontsize14)
plt.xlabel(性别, fontsize12)
plt.ylabel(人数, fontsize12)
plt.show()2.2 不同性别抑郁情况分布 接下来我们可以分析不同性别学生的抑郁情况分布。
plt.figure(figsize(10, 6))
sns.countplot(datadf, xGender, hueDepression, paletteSet2)
plt.title(不同性别抑郁情况分布, fontsize14)
plt.xlabel(性别, fontsize12)
plt.ylabel(人数, fontsize12)
plt.legend(title是否抑郁)
plt.show()2.3 不同睡眠时长与抑郁情况的关系 睡眠时长与抑郁情况的关系也是一个重要的分析点。
plt.figure(figsize(17, 10))
sns.countplot(datadf, xSleep Duration, hueDepression, paletteSet1)
plt.title(不同睡眠时长与抑郁情况的关系, fontsize14)
plt.xlabel(睡眠时间, fontsize12)
plt.ylabel(人数, fontsize12)
plt.legend(title是否抑郁)
plt.show()2.4 学习压力与抑郁的关系 学习压力是影响学生抑郁的重要因素之一。
plt.figure(figsize(10, 8))
sns.boxplot(datadf, xDepression, yAcademic Pressure, palettecoolwarm)
plt.title(学习压力与抑郁的关系, fontsize14)
plt.xlabel(是否抑郁, fontsize12)
plt.ylabel(学习压力, fontsize12)
plt.show()2.5 年龄分布与抑郁情况的关系 最后我们可以分析年龄分布与抑郁情况的关系。
plt.figure(figsize(12, 8))
sns.violinplot(datadf, xDepression, yAge, palettemuted)
plt.title(年龄分布与抑郁情况的关系, fontsize14)
plt.xlabel(是否抑郁, fontsize12)
plt.ylabel(年龄, fontsize12)
plt.tight_layout()
plt.show()2.6 其它多特征的组合显示
sns.pairplot(df, kindscatter, hueDepression, paletteSet1)三、特征编码与数据标准化 在进行机器学习模型训练之前我们需要对类别变量进行编码并对数值变量进行标准化。
# 创建标签编码器
label_encoder LabelEncoder()# 将类别变量转换为数值
df[Gender] label_encoder.fit_transform(df[Gender])
df[Depression] label_encoder.fit_transform(df[Depression])
df[Sleep Duration] label_encoder.fit_transform(df[Sleep Duration])
df[Dietary Habits] label_encoder.fit_transform(df[Dietary Habits])
df[Have you ever had suicidal thoughts ?] label_encoder.fit_transform(df[Have you ever had suicidal thoughts ?])
df[Family History of Mental Illness] label_encoder.fit_transform(df[Family History of Mental Illness])# 标准化数值变量
scaler StandardScaler()
df[[Age, Academic Pressure, Study Satisfaction, Study Hours, Financial Stress]] scaler.fit_transform(df[[Age, Academic Pressure, Study Satisfaction, Study Hours, Financial Stress]])划分数据集
# 特征和目标变量
X df.drop(Depression, axis1) # 去掉目标变量
y df[Depression] # 目标变量# 切分数据集
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)四、随机森林预测模型 在数据预处理完成后我们可以使用随机森林算法进行抑郁情况的预测。
# 创建并训练随机森林分类器
clf RandomForestClassifier(random_state42)
clf.fit(X_train, y_train)# 进行预测
y_pred clf.predict(X_test)# 评估模型性能
accuracy_rf accuracy_score(y_test, y_pred)
print(fRF模型准确率: {accuracy_rf:.2f})
print(classification_report(y_test, y_pred))混淆矩阵
cm confusion_matrix(y_test, y_pred)
# 绘制混淆矩阵
plt.figure(figsize(10, 8))
sns.heatmap(cm, annotTrue, fmtd, cmapBlues, xticklabelslabel_encoder.classes_, yticklabelslabel_encoder.classes_)
plt.title(混淆矩阵)
plt.xlabel(预测类别)
plt.ylabel(实际类别)
plt.show()特征重要度
# 获取特征重要度
feature_importances clf.feature_importances_# 绘制特征重要度图
plt.figure(figsize(10, 6))
ax sns.barplot(xdf.columns.tolist()[:-1], yfeature_importances, paletteviridis)
ax.set_xticklabels(ax.get_xticklabels(), rotation120)
plt.title(Feature Importances)
plt.xlabel(Importance)
plt.ylabel(Feature Index)
plt.show()结论 通过对学生抑郁数据的可视化分析我们了解了不同特征与学生抑郁情况之间的关系。其中Academic Pressure和Have you ever had suicidal thoughts ?两个特征是导致学生抑郁的两个重要的因素。