在当今这个信息爆炸的时代,教育和人才培养成为了人类社会未来发展的关键。学术成绩作为衡量学生表现的重要指标,不仅关系到个人的未来,也是教育机构管理和评估学生能力的重要工具。本文将探讨如何利用数据集来预测学生的数学成绩,并分析影响学生成绩的多种因素,包括社会和动机因素。
首先,需要了解数据集中的所有变量,以及哪些变量是预测目标所需的相关属性。数据集中包含了多个依赖和独立变量,这些变量展示了学术工作流程以及社会和动机影响因素。目标是预测未来的数学成绩及相关变量,以观察其交互作用。
在模型阶段,选择“数学成绩”作为目标变量,与所有剩余变量进行对比,以获得30%的数据分割,即70%用于训练,30%用于测试(未见过的数据)以提高预测准确性。可以看到,数学成绩受阅读和写作成绩的线性影响,表明擅长阅读和写作的学生也能以较好的速度学习数学。
在机器学习阶段,首先使用标签编码器转换所有分类变量,以便机器学习模型更容易检测输入并给出输出。如下方代码所示,输入已经转换为机器学习算法可读的格式。将转换后的数据输入到Pycaret算法中,并得到模型推荐。
import missingno as mn
mn.heatmap(df)
# 根据上述关系填充缺失值。
# 可以看到缺失值并非随机分布。
import seaborn as sns
from matplotlib import pyplot as plt
sns.pairplot(df)
from sklearn.preprocessing import OneHotEncoder, LabelEncoder
# 对分类变量进行标签编码
encoder = LabelEncoder()
df['gender'] = encoder.fit_transform(df[['gender']])
df['race/ethnicity'] = encoder.fit_transform(df[['race/ethnicity']])
df['parental level of education'] = encoder.fit_transform(df[['parental level of education']])
df['lunch'] = encoder.fit_transform(df[['lunch']])
df['test preparation course'] = encoder.fit_transform(df[['test preparation course']])
可以看到变量之间的线性关系,尤其是数学与阅读和写作的关系。使用Pycaret检查方法。让开始吧。
!pip install pycaret
!pip install markupsafe==2.0.1
X = df
y = df['math score']
from pycaret.anomaly import *
# 将数据分为30%的分割,即70%用于训练,30%用于测试
data = X.sample(frac=0.70, random_state=700)
data_unseen = X.drop(data.index)
data.reset_index(drop=True, inplace=True)
data_unseen.reset_index(drop=True, inplace=True)
exp_ano101 = setup(data, normalize=False, session_id=123, log_experiment=False)
models()
在模型选择中,测试了局部异常因子(Local Outlier Factor)、单类支持向量机(One-class SVM)和主成分分析(PCA)。选择PCA作为最佳的预测方法,因为数据显示在PCA中拟合度最好,并且考虑了异常值。