导航菜单
首页 >  考研预测分数线准确率  > 学生成绩预测

学生成绩预测

学生成绩预测一、问题描述二、 解决思路1. 决策树办法2. 回归办法三、理论基础1. 独热码2. 回归模型简介A. 线性回归模型B. 逻辑回归模型C. 岭回归模型D. 套索回归模型四、 动手实践1. 环境及模块2. 数据集预处理A. 首先导入pandas模块(import pandas as pd),按属性读取数据集的特征类别,保存在data_features中;B. 然后从sklearn模型中导入独热编码OneHotEncoder,对data_features进行编码;C. 接着就要给上面的编码结果加列名称,因为上面只是纯数据,没有索引或者名字,不方便观察。这主要用到pands模块里面的dataframe函数。 3. 训练模型A. 首先按列属性读出全部特征数值,作为模型的输入x,读入训练集的分数,作为模型的输出y;B. 然后调用并训练线性模型。 4. 预测分数A. 首先读取训练集数据并进行预处理,过程与上面处理训练集的过程一样,不再赘述。处理好的训练集格式如下:B. 然后读取该数据帧的全部列,作为模型的输入x_test,进行预测,并将结果四舍五入。5. 提交平台,计算方差A. 预测出来的成绩是纯数组格式的数据,为了保存为json格式,需要先把数组存为字典。于是首先生成一系列的列表,作为字典的键。B. 然后导入json模块,进行转换。C. 经过上述操作,我们得到了如下的结果:D. 提交平台,得到第一次结果:五、可复现代码六、 改进——套索回归模型七、 改进——岭回归模型八、 改进——多项式回归模型九、 总结

一、问题描述

现有两个数据集,一为训练数据集SP_train.csv,一为测试数据集SP_test.csv,训练数据集包括5000条数据,测试数据集包括1000条数据集。 训练数据集数据格式内容如下: 1 测试数据集数据格式内容如下: 在这里插入图片描述 所需解决的问题就是根据每个学生的gender、race/ethnicity、parental level of education、lunch、test preparation course等5种因素,预测math score、reading score、writing score。决定学生的五种因素各有其类别,比如gender包括female和male,lunch包括standard和free/reduced。

二、 解决思路 1. 决策树办法

一开始想用决策树,是因为训练集中的math score、reading score、writing score是整数数值,所以假设成绩是类别变量,类别最大不会超过100,只是类别有点多而已,于是打算用其5种特征因素训练生成决策树,根据决策树结构训练测试集从而得到相应的预测分数。 具体操作方式为:将每种特征的类别变量分别映射成数值变量,如t1={‘female’:1,‘male’:2},t2={‘group A’:1, ‘group B’:2, ‘group C’:3, ‘group D’:4, ‘group E’:5},然后根据数值变量训练生成决策树模型。 2

但是实践证明这条路行不通,因为训练过程中电脑直接死机、计算资源利用率瞬间拉满,而且决策树生成的决策树过于复杂、庞大,电脑根本查看不了细节信息。

2. 回归办法

预测分数问题本质是回归问题,成绩不能通过决策树预测出来。所以对于预测学生成绩问题,回归回归办法才是王道。所谓回归就是根据特征因素预测出数值,特征可以有多个,预测的数值也可以有多个。一旦确定用回归办法,就需要解决两个问题:1、如何把类别变量转换成数值变量;2、选择何种回归模型。常见的回归模型有线性回归模型、逻辑回归模型、岭回归模型、套索回归模型。 针对第一个问题,针对类别是否有序,一般有两种办法,如果类别有明显的大小关系或者顺序关系,就采用映射办法赋予类别变量相应的数值,如衣物的尺寸S、M、L就可赋予以下数值:{S: 1, M: 2, L: 3},给S赋予1,M赋予2,L赋予3,因为尺寸S、M、L本身是有大小关系的,所以赋予的值也得有这种关系。如果类别变量只是简单的并列关系,是无序的,那一般就采用独热码(onehot)对类别进行编码。就如训练数据集中的race/ethnicity(种族/民族)特征,group A、group B、group C、group D、group E谁也不比谁更好或者更好,它们只是并列关系而已,所以就可用独热码对其编码。 再看第二个问题,选择何种模型。其实这不是一个问题,这些模型,都跑一边就知道哪个模型的效果好了,哪个模型的效果好,就选哪个。实践操作中,我具体训练了多元回归模型、岭回归模型和套索模型,发现岭回归模型的效果最好。

三、理论基础 1. 独热码

在回归,分类,聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而我们常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。 独热码最重要的地方是任意两个码字之间的距离相等,因此如果对无序的类别变量进行独热码编码,就能使不同类别的码字距离比较合理。 从效果上看,独热码的效果就是把特征数字化、扩大化,数字化顾名思义,就是把类别变成数字,扩大化则是把一个特征列变为多个特征列。例如,给测试数据集的race/ethnicity列进行独热码编码,结果如下:

类别One hot codeGroup A10000Group B01000Group C00100Group D00010Group E00001

本来是一列特征,即race/ethnicity,但是经过独热码编码后,就变成了5列数字,这是独热码的特性所致——同一时刻只有一位数字有效(值为1),不同位的数字表示不同的类别,在上面的例子中,第一位表示Group A,第二位表示Group B,以此类推。所以根据编码结果,我们可以直接根据码字看出原类别。同理,训练数据集的其他类别特征也按照这样的方式编码,最终的结果是,原数据集中的5个特征类别,被编码成了17列特征数字。如下图所示: 3

17=2(gender)+5(race/ethnicity)+6(parental level of education)+2(lunch)+2(test preparation course)。第0列和第1列表示gender,第2~6列表示race/ethnicity,后续以此类推。

2. 回归模型简介 A. 线性回归模型

给定数据集 ,其中 ,x为特征,y为真实值。线性回归模型实际上就是求y和x的关系。它假设y和x之间存在线性关系,然后试图学得一个线性模型,然后根据模型尽可能准确地预测一个与真实值相接近的数值,表达式为: 4

向量表达式为: 5

B. 逻辑回归模型

逻辑回归虽然听起来是个回归算法,但实际上是个分类算法。它有二项式逻辑回归和多项式逻辑回归两种模式,共同点都是综合数据集给定的所有特征,得到一个或多个判定的阈值,然后将数据集中的数据分为两类或者多类。

C. 岭回归模型

这是线性模型的改良模型,线性模型求解特征值和真实值之间的线性关系时用的是最小二乘法,这是无偏的估计回归方法,存在的一个问题是,对于某些矩阵,某个元素很小的变动,会造成最后的计算结果有很大的变动,从而误差很大,岭回归模型采用的岭回归估计方法,是放弃无偏性、损失部分信息、降低精度的改良版最小二乘法。

D. 套索回归模型

岭回归是线性模型的改良版,但是也始终保留了所有的特征变量,无法降低模型的复杂度,套索回归是线性回归的另外一种改良版本,在估计模型的时候,它将一些不重要的参数直接置为0,达到变量筛选的目的。

四、 动手实践 1. 环境及模块

环境:Win10、Anaconda 3-2020.07-Windows-x86_64下的spyder(python3.8.3) 模块:pandas、sklearn、numpy、json Pandas:用来处理数据结构和数据分析; Sklearn:包含了一些机器学习方法,

相关推荐: