🌟欢迎来到 我的博客 —— 探索技术的无限可能!
多维因素与学生辍学风险预测:文章内容
多维因素与学生辍学风险预测附录:附录
附录
整理
在构建数据模型时,我们可以引入以下标签进行相关性分析和预测:
(将学业状态,是否为奖学金,学业成绩获得者作为标签,进行相关性分析与预测。)
-
学业状态:这一标签反映了学生的当前教育阶段,如是否在校、休学、毕业等。通过分析这一标签与其他变量的关系,我们可以识别可能导致学生辍学的风险因素,从而提前采取干预措施,如提供辅导和心理支持,以降低辍学率。
-
奖学金获得者:这一标签指示学生是否获得奖学金。通过分析这一标签与其他变量的关系,我们可以发掘影响学生获得奖学金的因素,如学业成绩、家庭经济状况等,从而为优化奖学金分配政策提供依据。
-
学业成绩:这一标签反映了学生的学术表现。通过分析这一标签与其他变量的关系,我们可以发掘影响学生学业成绩的因素,如学习习惯、教育资源等,从而制定针对性的教育策略,提高学生的学习成绩。
同时,我们还可以引入地区社会因素作为标签进行分析:
(同一地区失业率、通货膨胀率、国内生产总值(GDP)相同,从而得到学生所处地区与情况)
-
地区失业率:这一标签反映了学生所在地区的就业市场状况。通过分析这一标签与学生学业状态、成绩等的关系,我们可以评估不同地区社会因素对居民的影响,从而帮助社会机构制定有针对性的教育、就业支持政策。
-
通货膨胀率:这一标签反映了学生所在地区的经济稳定性。通过分析这一标签与学生学业状态、成绩等的关系,我们可以评估经济因素对学生学业和生活的影响,从而为政府和社会机构提供决策依据。
-
国内生产总值(GDP):这一标签反映了学生所在地区的经济发展水平。通过分析这一标签与学生学业状态、成绩等的关系,我们可以评估经济发展水平对学生学业和生活的影响,从而为政府和社会机构提供决策依据。
总结:
- 识别学生辍学的风险因素:提前去进行指导教育,降低辍学率
- 发掘影响成绩的因素:对症下药,提高学习成绩
- 不同地区社会因素对居民的影响:帮助为政府、教育机构和社会组织提供有针对性的政策建议和支持措施。
一. 准备工作与数据预处理
1.1 数据查看
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
from pyecharts.charts import *
from pyecharts import options as opts
df = pd.read_csv('dataset.csv')
print('去重前:',df.shape[0],'行数据')
print('去重后:',df.drop_duplicates().shape[0],'行数据')
df.head()
df.info()
1.2 特征处理
1.2.1 学业状态映射
df['学业状态'].unique()
df['学业状态'].value_counts()
df['学业状态_num'] = df['学业状态'].map({
'辍学':0,'已入学':1,'毕业':2})
df['学业状态_num'].value_counts()
1.2.2 所在地区提取
df[['该地区失业率','该地区通货膨胀率','该地区国内生产总值']].drop_duplicates().sort_values(by=['该地区国内生产总值'])
df['该地区国内生产总值'].value_counts()
df['local'] = df['该地区国内生产总值'].map({
-4.06:0 , -3.12: 1 , -1.70: 2 , -0.92: 3
, 0.32 : 4 , 0.79 :5 , 1.74: 6 , 1.79 : 7 , 2.02: 8 , 3.51: 9 })
df['local'].value_counts()
二. 探索性数据分析
2.1 目标学生基本信息调研(国籍+性别+婚姻+流浪+债务)
guoji = df[['性别','国籍']].groupby(['国籍']).count().sort_values(by=['性别'],ascending=False)
x1 = list(guoji.index)
y1 = guoji['性别'].tolist()
chart0 = Bar(init_opts=opts.InitOpts(width='1000px',height='400px',theme='macarons'))
chart0.add_xaxis(x1)
chart0.add_yaxis('', y1,
itemstyle_opts={
'barBorderRadius':[60, 60, 20, 20]})
chart0.set_global_opts(
legend_opts=opts.LegendOpts(pos_right='10%',pos_top='2%'),
title_opts=opts.TitleOpts(title="学生国籍分布图",pos_left='40%'))
chart0.render_notebook()
df['国际学生'].value_counts()
4314/4424
df['性别'].value_counts()
df['婚姻状况'].value_counts()
#饼图
df_pair_sex = [['0', 2868], ['1', 1556]]
df_pair_marry = [['2',379],['3',4],['4',91],['5',25],['6',6],['1',3919],]
chart1 = Pie(init_opts=opts.InitOpts(width='1000px',height='300px',theme='macarons' ))
chart1.add('学生性别构成', df_pair_sex,radius=['40%', '70%'],rosetype='radius',center=['25%', '50%'],
label_opts=opts.LabelOpts(is_show=True ,formatter = '性别 {b}:{c}人,占{d}%'))
chart1.add('学生婚姻情况构成', df_pair_marry,radius=['40%', '70%'],center=['70%', '50%'],
label_opts=opts.LabelOpts(is_show=True ,formatter = '婚姻状况 {b}:{c}人,占{d}%'))
chart1.set_global_opts(legend_opts=opts.LegendOpts(is_show=False,pos_right='0%',orient='vertical'),
title_opts=opts.TitleOpts(title="学生性别分布 学生婚姻情况构成",pos_left='22%'))
chart1.render_notebook() #显示
df['是否流离失所'].value_counts()
df['是否为债务人'].value_counts()
#饼图
df_pair_home = [['0', 2426], ['1', 1998]]
df_pair_debt = [['2',3921],['3',503]]
chart2 = Pie(init_opts=opts.InitOpts(width='900px',height='300px',theme='macarons' ))
chart2.add('学生是否流离失所'