一种基于机器学习的学生学业预警系统的预警方法与流程

文档序号:14135995阅读:1346来源:国知局
一种基于机器学习的学生学业预警系统的预警方法与流程

本发明属于数据预测领域,特别涉及一种基于机器学习的学生学业预警系统的预警方法。



背景技术:

信息的爆炸式增长,迎来了网络大数据的到来,使得数据挖掘技术逐步成为重要的研究领域,并为教育领域提供了革命的动力。数据挖掘的前身是数据库中的知识发现kdd(knowledgediscoveryindatabases),把数据挖掘和统计分析相结合,对数据进行分析并做出归纳,从中挖掘潜在的价值。

数据预测技术的使用,对现代的信息技术的发展起着重大作用。尽管数据预测的数据来源是具体的数据集,成功预测出有效的结果值是比较困难的;对于学生学业预警来说数据源的数据集是十分规整的,但是通过现有数据源,以现有的技术进行学生学业预警还是比较困难的。因此,如何从现有数据源中准确预测出有效结果,成为一个亟待需要研究解决的问题。

处于信息大爆炸时代和快节奏生活下的用户人群,越来越倾向于数据处理的效率和准确率。学生学业预警,通过已有的数据源,结合相关算法,得到结果数据。所有的方法主要解决的是数据预测的准确率和效率,这成为了一个有着研究和实用意义的问题。

在现有的信息获取和推送方法中,往往都只解决了上述几个问题中的部分问题。

如中国专利文献号106778054a,公布日2017-05-31,公开了一种基于数据挖掘的在校学生成绩预警方法,包括获取学校己毕业学生的成绩数据并分等;采用apriori算法挖掘成绩数据中所有符合最小支持度计数值的频繁项集;利用频繁项集得到所有强关联规则;对在校学生的所有成绩运用强关联规则进行数据运算,得到成绩的预测和预警结果。本发明通过获取往届学生的学习成绩数据,并对获取的成绩数据进行数据挖掘和关联分析,从而得到各科成绩之间的强关联规则,并根据获得的各科成绩之间的强关联规则对在校学生的成绩进行预测和预警,因此本发明方法从客观的数据出发,能够及时和实时的对学生的成绩进行预测和预警,而且客观、合理、科学、计算速度快和精度高。

当然,目前还存在很多的学生学业预警方法,很多基于现有的数据预测进行改进的方法也在被不断的提出。但是现有的方法往往都只关注于学生学业预警问题中的某一点,很多方法通过分析学生已有成绩确定是否需要学业预警,在准确率上面缺乏了准确性,导致不能满足用户要求的准确率。

综上所述研究发明一种基于机器学习的学生学业预警方法及个性化服务系统,对学生正确评估自己是否学业预警和老师管理有着重要的作用和意义。传统的方法无法实现对学生学业预警的评估。近年来对数值型数据的预测方法越来越多,如神经网络、回归预测、决策树和支持向量机等。

朱全银等人已有的研究基础包括:朱全银,严云洋,周培,谷天峰.一种基于线性插补与自适应滑动窗口的商品价格预测模型.山东大学学报.2012,vol.42(5):53-58;朱全银,潘禄,刘文儒,等.web科技新闻分类抽取方法[j].淮阴工学院学报,2015,24(5):18-24;李翔,朱全银.联合聚类和评分矩阵共享的协同过滤推荐[j].计算机科学与探索,2014,8(6):751-759;quanyinzhu,sunquncao.anovelclassifier-independentfeatureselectionalgorithmforimbalanceddatasets.2009,p:77-82;quanyinzhu,yunyangyan,jinding,jinqian.thecasestudyforpriceextractingofmobilephonesellonline.2011,p:282-285;quanyinzhu,suquncao,peizhou,yunyangyan,hongzhou.integratedpriceforecastbasedondichotomybackfillinganddisturbancefactoralgorithm.internationalreviewoncomputersandsoftware,2011,vol.6(6):1089-1093;zhuquan-yin,yinyonghua,yanyun-yang,gutian-feng.anovelefficientadaptiveslidingwindowmodelforweek-aheadpriceforecasting.telkomnikaindonesianjournalofelectricalengineering.2014.vol.12(3):2219-2226;zhuquanyin,panlu,yinyonghualixiang.influenceonnormalizationandmagnitudenormalizationforpriceforecastingofagriculturalproducts.informationtechnologyjournal(itj).2013.vol.12(15):3046-3057;quanyinzhu,jinding,yonghuayin,peizhou.ahybridapproachfornewproductsdiscoveryofcellphonebasedonwebmining.journalofinformationandcomputationalscience(jics).2012,vol.9(16):5039-5046。朱全银等人申请、公开与授权的相关专利:朱全银,尹永华,严云洋,曹苏群等,一种基于神经网络的多品种商品价格预测的数据预处理方法.中国专利:zl201210325368.6,2016.06.08;朱全银,胡蓉静,何苏群,周培等.一种基于线性插补与自适应滑动窗口的商品价格预测方法.中国专利:zl201110423015.5,2015.07.01;朱全银,曹苏群,严云洋,胡蓉静等,一种基于二分数据修补与扰乱因子的商品价格预测方法.中国专利:zl201110422274.6,2015.07.01;朱全银,辛诚,李翔,潘舒新等,一种基于k-means和lda双向验证的网络行为习惯聚类方法.中国专利公开号:cn106202480a,2016.12.07;朱全银,辛诚,刘斌,潘舒新等,一种基于分类语料库-关键词词频-记录关联的网络行为习惯量化方法.中国专利公开号cn106202498a,2016.12.07;李翔,朱全银,胡荣林,周泓.一种基于谱聚类的冷链物流配载智能推荐方法.中国专利公开号:cn105654267a,2016.06.08。

xgboost:

xgboost的全称是extremegradientboosting。正如其名,它是gradientboostingmachine的一个c++实现。xgboost最大的特点在于,它能够自动利用cpu的多线程进行并行,同时在算法上加以改进提高了精度。它的处女秀是kaggle的希格斯子信号识别竞赛,因为出众的效率与较高的预测准确度在比赛论坛中引起了参赛选手的广泛关注,在1700多支队伍的激烈竞争中占有一席之地。

与现有的发明专利对比分析:

本发明专利创造性的提出了一种基于机器学习的学生学业预警系统的预警方法,与一种基于数据挖掘的在校学生成绩预警方法已公开的发明专利进行对比,本发明专利精确到每个学生的具体年级具体学期的成绩,并且拥有具体的实例证明其准确性,得出了学生的学业预警结果准确率平均值为96.63%。



技术实现要素:

发明目的:传统的学生学业预警方法是通过对学生自我对先前取得的挂科数的走势进行评估,缺乏准确性。针对传统方法存在的问题,本发明通过分析学生的在校学习成绩的历史数据,为研究者提一种供基于机器学习的学生学业预警系统的预警方法。

技术方案:为解决上述技术问题,本发明提供一种基于机器学习的学生学业预警系统的预警方法,包括如下步骤:

步骤1:对学生成绩数据集resultsdata进行数据清洗,得出学生清洗成绩数据集cleaningdata;

步骤2:对cleaningdata进行数据预处理,得出学生统计成绩数据集statisticaldata;

步骤3:对statisticaldata的数据按每个年级每个学期的成绩进行分类,通过xgboost算法对预处理后的数据集进行预测处理,得到学生学业预警数据集warningdata,分析处理warningdata的数据并发送预警给相关人员。

进一步的,所述步骤1中对学生成绩数据集resultsdata进行数据清洗的具体步骤如下:

步骤1.1:对学生成绩数据集的成绩出现不及格、及格、中等、良好、优秀、合格、不合格、缺考以及空,量化为具体的量化数值,其中不及格为55、及格为65、中等为75、良好为85、优秀为95、合格为100、不合格为50、缺考以及空均为0;

步骤1.2:若对于重修的成绩,按照第二次考试的成绩计算分数录入数值;

步骤1.3:根据学校课程信息数据集量化每条成绩所修学分,得到学生清洗成绩数据集cleaningdata。

进一步的,所述步骤2中对cleaningdata进行数据预处理的具体步骤如下:

步骤2.1:把全校的学生信息数据集和步骤1清洗出来的学生清洗成绩数据集相结合,抽取出每个学生每个学期的所有课程的课程名称、学分和成绩;

步骤2.2:计算出每个学生每个学期的加权平均分;

步骤2.3:根据加权平均分得出每个学期的预警状况,并将1设置为不需要预警,0设置为需要预警,得出学生统计成绩数据集statisticaldata。

进一步的,所述步骤3中对statisticaldata的数据按每个年级每个学期的成绩进行分类,通过xgboost算法对预处理后的数据集进行预测处理,得到学生学业预警数据集warningdata,分析处理warningdata的数据并发送预警给相关人员的具体步骤如下:

步骤3.1:根据步骤2得出的学生统计成绩数据集按年级分类;

步骤3.2:对每个年级的数据集统计每个年级已修的所有课程,并计算每个学生在这些所有课程下的成绩,没有成绩的记为0;

步骤3.3:用xgboost算法进行预测,得到学生年级成绩数据结果集gradescores;

步骤3.4:统计数据,提供web和微信查询接口,并把该学生的成绩语音生成音频,以网络电话的方式发送给家长、教师和学生。

进一步的,所述步骤1中对学生成绩数据集resultsdata进行数据清洗的具体步骤如下:

步骤1.1:定义resultsdata为学生成绩数据集,resultsdata={{oldsemester1,oldstudentid1,oldcourse1,oldresult1,oldtworesult1},{oldsemester2,oldstudentid2,oldcourse2,oldresult2,oldtworesult2},…,{oldsemesterarticlesum,oldstudentidarticlesum,oldcoursearticlesum,oldresultarticlesum,oldtworesultarticlesum}},其中,articlesum为学生成绩数据集的数据条数,oldsemesteru为第u条成绩所在的学期,oldstudentidu为第u条成绩对应的学生学号,oldcourseu为第u条成绩的课程名称,oldresultu为第u条成绩的结果,oldtworesultu为第u条成绩的补考结果,u∈[1,articlesum];

步骤1.2:定义cleaningdata为学生清洗成绩数据集,cleaningdata={{semester1,studentid1,course1,result1,credit1},{semester2,studentid2,course2,result2,credit2},…,{semesterarticlesum,studentidarticlesum,coursearticlesum,resultarticlesum,creditarticlesum}},其中,semestert为第t条成绩所在的学期,studentidt为第t条成绩的学生学号,courset为第t条成绩的课程名称,resultt为第t条成绩的结果,creditt为第t条成绩的学分,t∈[1,articlesum];

步骤1.3:定义coursedata为课程信息数据集,coursedata={{coursename1,coursecredit1},{coursename2,coursecredit2},…,{coursenamecousum,coursecreditcousum}},其中,cousum为课程总数,collegenamev为第v个课程名称,coursecreditv为第v个课程的学分,v∈[1,cousum];

步骤1.4:定义循环变量r,赋初始值为1,用于循环遍历cleaningdata;

步骤1.5:如果r<=articlesum,执行步骤1.6,否则结束循环,得到清洗成绩数据集cleaningdata;

步骤1.6:semesterr=oldsemesterr,studentidr=oldstudentidr,courser=oldcourser;

步骤1.7:定义循环变量h,赋初始值为1,用于循环遍历coursedata;

步骤1.8:如果coursenameh=courser,执行步骤1.10,否则执行步骤1.9;

步骤1.9:h=h+1,返回步骤1.8;

步骤1.10:creditr=coursecredith;

步骤1.11:如果oldresultr=不及格,resultr=55,执行步骤1.15;如果oldresultr=及格,resultr=65,执行步骤1.15;如果oldresultr=中等,resultr=75,执行步骤1.15;如果oldresultr=良好,resultr=85,执行步骤1.15;如果oldresultr=优秀,resultr=95,执行步骤1.15;如果oldresultr=合格,resultr=100,执行步骤1.15;如果oldresultr=不合格,resultr=50,执行步骤1.15;如果oldresultr=缺考,resultr=0,执行步骤1.15;如果oldresultr=null,resultr=0,执行步骤1.15;如果oldresultr=重修,resultr=0,执行步骤1.15;如果oldresultr=补考,执行步骤1.12;以上条件都不满足则执行步骤1.14;

步骤1.12:如果oldtworesultr=重修,resultr=0,否则执行步骤1.13;

步骤1.13:resultr=oldtworesultr,执行步骤1.15;

步骤1.14:resultr=oldresultr,执行步骤1.15;

步骤1.15:r=r+1,返回步骤1.5。

进一步的,所述步骤2中对cleaningdata进行数据预处理的具体步骤如下:

步骤2.1:定义studentsinfodata为学生信息数据集,studentsinfodata={{collegeid1,classid1,studentid1,grade1},{collegeid2,classid2,studentid2,grade2},…,{collegeidstusum,classidstusum,studentidstusum,gradestusum}},其中,stusum为学生总人数,collegeidq为第q个学生所在学院的编号,classidq为第q个学生所在班级的编号,studentidq为第q个学生的学号,gradeq为第q个学生的年级,q∈[1,stusum];

步骤2.2:定义statisticaldata为学生统计成绩数据集,statisticaldata={{studentnum1,stucollegeid1,stuclassid1,stugrade1,firstsemester1,secondsemester1,thirdsemester1,fourthsemester1,fifthsemester1,sixthsemester1},{studentnum2,stucollegeid2,stuclassid2,stugrade2,firstsemester2,secondsemester2,thirdsemester2,fourthsemester2,fifthsemester2,sixthsemester2},…,{studentnumstusum,stucollegeidstusum,stuclassidstusum,stugradestusum,firstsemesterstusum,secondsemesterstusum,thirdsemesterstusum,fourthsemesterstusum,fifthsemesterstusum,sixthsemesterstusum}},其中,studentnumk为第k个学生对应的学号,stucollegeidk为第k个学生对应的学院编号,stuclassidk为第k个学生对应的班级编号,stugradek为第k个学生对应的年级,firstsemesterk为第k个学生对应的第一学期成绩的数据集,secondsemesterk为第k个学生对应的第二学期成绩的数据集,thirdsemesterk为第k个学生对应的第三学期成绩的数据集,fourthsemesterk为第k个学生对应的第四学期成绩的数据集,fifthsemesterk为第k个学生对应的第五学期成绩的数据集,sixthsemesterk为第k个学生对应的第六学期成绩的数据集,k∈[1,stusum];

步骤2.3:firstsemesterfirk={firstcoursefirk,firstresultfirk,firstwarningfirk},其中,firstcoursefirk为第一学期第firk个学生的课程数据集,firstresultfirk为第一学期第firk个学生的加权平均分,firstwarningfirk为第一学期第firk个学生的学业预警结果;secondsemesterseck={secondcourseseck,secondresultseck,secondwarningseck},其中,secondcourseseck为第二学期第seck个学生的课程数据集,secondresultseck为第二学期第seck个学生的加权平均分,secondwarningseck为第二学期第seck个学生的学业预警结果;thirdsemesterthik={thirdcoursethik,thirdresultthik,thirdwarningthik},其中,thirdcoursethik为第三学期第thik个学生的课程数据集,thirdresultthik为第三学期第thik个学生的加权平均分,thirdwarningthik为第三学期第thik个学生的学业预警结果;fourthsemesterfouk={fourthcoursefouk,fourthresultfouk,fourthwarningfouk},其中,fourthcoursefouk为第四学期第fouk个学生的课程数据集,fourthresultfouk为第四学期第fouk个学生的加权平均分,fourthwarningfouk为第四学期第fouk个学生的学业预警结果;fifthsemesterfifk={fifthcoursefifk,fifthresultfifk,fifthwarningfifk},其中,fifthcoursefifk为第五学期第fifk个学生的课程数据集,fifthresultfifk为第五学期第fifk个学生的加权平均分,fifthwarningfifk为第五学期第fifk个学生的学业预警结果;sixthsemestersixk={sixthcoursesixk,sixthresultsixk,sixthwarningsixk},其中,sixthcoursesixk为第六学期第sixk个学生的课程数据集,sixthresultsixk为第六学期第sixk个学生的加权平均分,sixthwarningsixk为第六学期第sixk个学生的学业预警结果;

步骤2.4:firstcoursefirc={{firstcoursename1,firstcoursecredit1,firstcourseresult1},{firstcoursename2,firstcoursecredit2,firstcourseresult2},…,{firstcoursenamecousum,firstcoursecreditcousum,firstcourseresultcousum}},其中,firstcoursenamefirci为第一学期第firc个学生第i门课的课程名称,firstcoursecreditfirci为第一学期第firc个学生第i门课的学分,firstcourseresultfirci为第一学期第firc个学生第i门课的成绩,firci∈[1,cousum];secondcoursesecc={{secondcoursename1,secondcoursecredit1,secondcourseresult1},{secondcoursename2,secondcoursecredit2,secondcourseresult2},…,{secondcoursenamecousum,secondcoursecreditcousum,secondcourseresultcousum}},其中,secondcoursenamesecci为第二学期第secc个学生第i门课的课程名称,secondcoursecreditsecci为第二学期第secc个学生第i门课的学分,secondcourseresultsecci为第二学期第secc个学生第i门课的成绩,secci∈[1,cousum];thirdcoursethic={{thirdcoursename1,thirdcoursecredit1,thirdcourseresult1},{thirdcoursename2,thirdcoursecredit2,thirdcourseresult2},…,{thirdcoursenamecousum,thirdcoursecreditcousum,thirdcourseresultcousum}},其中,thirdcoursenamethici为第三学期第thic个学生第i门课的课程名称,thirdcoursecreditthici为第三学期第thic个学生第i门课的学分,thirdcourseresultthici为第三学期第thic个学生第i门课的成绩,thici∈[1,cousum];fourthcoursefouc={{fourthcoursename1,fourthcoursecredit1,fourthcourseresult1},{fourthcoursename2,fourthcoursecredit2,fourthcourseresult2},…,{fourthcoursenamecousum,fourthcoursecreditcousum,fourthcourseresultcousum}},其中,fourthcoursenamefouci为第四学期第fouc个学生第i门课的课程名称,fourthcoursecreditfouci为第四学期第fouc个学生第i门课的学分,fourthcourseresultfouci为第四学期第fouc个学生第i门课的成绩,fouci∈[1,cousum];fifthcoursefifc={{fifthcoursename1,fifthcoursecredit1,fifthcourseresult1},{fifthcoursename2,fifthcoursecredit2,fifthcourseresult2},…,{fifthcoursenamecousum,fifthcoursecreditcousum,fifthcourseresultcousum}},其中,fifthcoursenamefifci为第五学期第fifc个学生第i门课的课程名称,fifthcoursecreditfifci为第五学期第fifc个学生第i门课的学分,fifthcourseresultfifci为第五学期第fifc个学生第i门课的成绩,fifci∈[1,cousum];sixthcoursesixc={{sixthcoursename1,sixthcoursecredit1,sixthcourseresult1},{sixthcoursename2,sixthcoursecredit2,sixthcourseresult2},…,{sixthcoursenamecousum,sixthcoursecreditcousum,sixthcourseresultcousum}},其中,sixthcoursenamesixci为第六学期第sixc个学生第i门课的课程名称,sixthcoursecreditsixci为第六学期第sixc个学生第i门课的学分,sixthcourseresultsixci为第六学期第sixc个学生第i门课的成绩,sixci∈[1,cousum];

步骤2.5:定义循环变量a,赋初始值为1,用于循环遍历studentsinfodata;

步骤2.6:如果a<=stusum,执行步骤2.7,否则结束循环,得到学生统计成绩数据集statisticaldata;

步骤2.7:studentnuma=studentida,stucollegeida=collegeida,stuclassida=classida,stugradea=gradea;

步骤2.8:定义循环变量b,赋初始值为1,用于循环遍历步骤1得到的cleaningdata;

步骤2.9:定义循环变量ca,赋初始值为1,用于循环遍历firstcoursea;定义变量sumcaa和scosumcaa,赋初始值为0,用于计算第a个学生第一学期的加权平均分;定义循环变量cb,赋初始值为1,用于循环遍历secondcoursea;定义变量sumcba和scosumcba,赋初始值为0,用于计算第a个学生第二学期的加权平均分;定义循环变量cc,赋初始值为1,用于循环遍历thirdcoursea;定义变量sumcca和scosumcca,赋初始值为0,用于计算第a个学生第三学期的加权平均分;定义循环变量cd,赋初始值为1,用于循环遍历fourthcoursea;定义变量sumcda和scosumcda,赋初始值为0,用于计算第a个学生第四学期的加权平均分;定义循环变量ce,赋初始值为1,用于循环遍历fifthcoursea;定义变量sumcea和scosumcea,赋初始值为0,用于计算第a个学生第五学期的加权平均分;定义循环变量cf,赋初始值为1,用于循环遍历sixthcoursea;定义变量sumcfa和scosumcfa,赋初始值为0,用于计算第a个学生第六学期的加权平均分;

步骤2.10:如果b<=articlesum,执行步骤2.11,否则执行步骤2.14;

步骤2.11:如果studentnuma=studentidb,执行执行步骤2.12,否则执行步骤2.13;

步骤2.12:如果semesterb=1,firstcoursenameca=courseb,firstcoursecreditca=creditb,firstcourseresultca=resultb,ca=ca+1,scosumcaa=scosumcaa+creditb,sumcaa=sumcaa+creditb*resultb;如果semesterb=2,secondcoursenamecb=courseb,secondcoursecreditcb=creditb,secondcourseresultcb=resultb,cb=cb+1,scosumcba=scosumcba+creditb,sumcba=sumcba+creditb*resultb;如果semesterb=3,thirdcoursenamecc=courseb,thirdcoursecreditcc=creditb,thirdcourseresultcc=resultb,cc=cc+1,scosumcca=scosumcca+creditb,sumcca=sumcca+creditb*resultb;如果semesterb=4,fourthcoursenamecd=courseb,fourthcoursecreditcd=creditb,fourthcourseresultcd=resultb,cd=cd+1,scosumcda=scosumcda+creditb,sumcda=sumcda+creditb*resultb;如果semesterb=5,fifthcoursenamece=courseb,fifthcoursecreditce=creditb,fifthcourseresultce=resultb,ce=ce+1,scosumcea=scosumcea+creditb,sumcea=sumcea+creditb*resultb;如果semesterb=6,sixthcoursenamecf=courseb,sixthcoursecreditcf=creditb,sixthcourseresultcf=resultb,cf=cf+1,scosumcfa=scosumcfa+creditb,sumcfa=sumcfa+creditb*resultb;

步骤2.13:b=b+1,返回步骤2.10;

步骤2.14:firstresulta=sumcaa/scosumcaa,如果firstresulta>=60,firstwarninga=1,否则firstwarninga=0;

步骤2.15:secondresulta=sumcba/scosumcba,如果secondresulta>=60,secondwarninga=1,否则secondwarninga=0;

步骤2.16:thirdresulta=sumcca/scosumcca,如果thirdresulta>=60,thirdwarninga=1,否则thirdwarninga=0;

步骤2.17:fourthresulta=sumcda/scosumcda,如果fourthresulta>=60,fourthwarninga=1,否则fourthwarninga=0;

步骤2.18:fifthresulta=sumcea/scosumcea,如果fifthresulta>=60,fifthwarninga=1,否则fifthwarninga=0;

步骤2.19:sixthresulta=sumcfa/scosumcfa,如果sixthresulta>=60,sixthwarninga=1,否则sixthwarninga=0;

步骤2.20:a=a+1,返回步骤2.6。

进一步的,所述步骤3中对statisticaldata的数据按每个年级每个学期的成绩进行分类,通过xgboost算法对预处理后的数据集进行预测处理,得到学生学业预警数据集warningdata,分析处理warningdata的数据并发送预警给相关人员的具体步骤如下:

步骤3.1:定义gradescores为学生年级成绩数据集,gradescores={grade14,grade15,grade16},其中,gradei为第i年级学生成绩数据集,gradei∈gradescores,i∈[14,16];

步骤3.2:gradei={{xushengidi_1,xueyuanidi_1,banjiidi_1,kechengnamei_1_1,kechengnamei_1_2,…,kechengnamei_1_kcmax,kechengi_1_1,kechengi_1_2,…,kechengscorei_1_kcmax,chengjiscorei_1_1,chengjiscorei_1_2,…,chengjii_1_cjmax,yujingi_1_1,yujingi_1_2,…,yujingi_1_cjmax},{xushengidi_2,xueyuanidi_2,banjiidi_2,kechengnamei_2_1,kechengnamei_2_2,…,kechengnamei_2_kcmax,kechengscorei_2_1,kechengscorei_2_2,…,kechengscorei_2_kcmax,chengjii_2_1,chengjii_2_2,…,chengjii_2_cjmax,yujingi_2_1,yujingi_2_2,…,yujingi_2_cjmax},…,{xushengidi_njmax,xueyuanidi_njmax,banjiidi_njmax,kechengnamei_njmax_1,kechengnamei_njmax_2,…,kechengnamei_njmax_kcmax,kechengscorei_njmax_1,kechengscorei_njmax_2,…,kechengscorei_njmax_kcmax,chengjii_njmax_1,chengjii_njmax_2,…,chengjii_njmax_cjmax,yujingi_njmax_1,yujingi_njmax_2,…,yujingi_njmax_cjmax}},其中,i_njmax为第i年级的学生总数,i_njmax_kcmax为第i年级所有的课程数,i_njmax_cjmax为第i年级当前已完成学期数,xushengidi_j为第i年级第j名学生的学号,xueyuanidi_j为第i年级第j名学生所在学院的编号,banjiidi_j为第i年级第j名学生所在班级的编号,kechengnamei_j_z为i年级第j名学生第z门课程名称,kechengscorei_j_z为i年级第j名学生第z门课程成绩,chengjii_j_m为第i年级第j名学生第m学期加权平均分,yujingi_j_m为第i年级第j名学生第m学期的预警结果,j∈[1,kcmax],z∈[1,njmax],m∈[1,cjmax];

步骤3.3:取步骤2的学生成绩统计数据集statisticaldata;

步骤3.4:定义循环变量x,赋初始值为1,用于循环遍历statisticaldata;

步骤3.5:如果x<=granum,执行步骤3.6,否则执行步骤3.26;

步骤3.6:定义循环变量xa,赋初始值为1,用于循环遍历grade14;定义循环变量xb,赋初始值为1,用于循环遍历grade15;定义循环变量xc,赋初始值为1,用于循环遍历grade16;

步骤3.7:如果stugradex=14,xushengid14_xa=studentnumx,xueyuanid14_xa=stucollegeidx,banjiid14_xa=stuclassidx,chengji14_xa_1=firstresultx,chengji14_xa_2=secondresultx,chengji14_xa_3=thirdresultx,chengji14_xa_4=fourthresultx,chengji14_xa_5=fifthresultx,chengji14_xa_6=sixthresultx,yujing14_xa_1=firstwarningx,yujing14_xa_2=secondwarningx,yujing14_xa_3=thirdwarningx,yujing14_xa_4=fourthwarningx,yujing14_xa_5=fifthwarningx,yujing14_xa_6=ssixthwarningx,执行步骤3.10;

步骤3.8:如果stugradex=15,xushengid15_xb=studentnumx,xueyuanid15_xb=stucollegeidx,banjiid15_xb=stuclassidx,chengji15_xb_1=firstresultx,chengji15_xb_2=secondresultx,chengji15_xb_3=thirdresultx,chengji15_xb_4=fourthresultx,yujing15_xb_1=firstwarningx,yujing15_xb_2=secondwarningx,yujing15_xb_3=thirdwarningx,yujing15_xb_4=fourthwarningx,执行步骤3.15;

步骤3.9:如果stugradex=16,xushengid16_xc=studentnumx,xueyuanid16_xc=stucollegeidx,banjiid16_xc=stuclassidx,chengji16_xc_1=firstresultx,chengji16_xc_2=secondresultx,yujing16_xc_1=firstwarningx,yujing16_xc_2=secondwarningx,执行步骤3.20;

步骤3.10:定义循环变量ya,赋初始值为1,用于循环遍历grade14;

步骤3.11:如果ya<=xa,执行步骤3.12,否则执行步骤3.14;

步骤3.12:如果firstcoursenamex=kechengname14_x_ya,执行步骤3.13,否则ya=ya+1,返回步骤3.11;

步骤3.13:kechengscore14_x_xa=firstcourseresultx,xa=xa+1,执行步骤3.25;

步骤3.14:kechengname15_x_xb=coursenamex,kechengscore15_x_xb=courseresultx,xb=xb+1,执行步骤3.25;

步骤3.15:定义循环变量yb,赋初始值为1,用于循环遍历grade15;

步骤3.16:如果yb<=xb,执行步骤3.17,否则执行步骤3.19;

步骤3.17:如果firstcoursenamex=kechengname15_x_yb,执行步骤3.18,否则yb=yb+1,返回步骤3.16;

步骤3.18:kechengscore15_x_xa=firstcourseresultx,xb=xb+1,执行步骤3.25;

步骤3.19:kechengname15_x_xb=coursenamex,kechengscore15_x_xb=courseresultx,xb=xb+1,执行步骤3.25;

步骤3.20:定义循环变量yc,赋初始值为1,用于循环遍历grade16;

步骤3.21:如果yc<=xc,执行步骤3.22,否则执行步骤3.24;

步骤3.22:如果firstcoursenamex=kechengname16_x_ya,执行步骤3.23,否则yb=yb+1,返回步骤3.21;

步骤3.23:kechengscore16_x_xa=firstcourseresultx,xc=xc+1,执行步骤3.25;

步骤3.24:kechengname16_x_xc=coursenamex,kechengscore16_x_xc=courseresultx,xc=xc+1,执行步骤3.25;

步骤3.25:x=x+1,返回步骤3.5;

步骤3.26:得到学生年级成绩数据结果集gradescores;

步骤3.27:定义最终学生下学期学业预警数据forwaring={{id1,war1},{id2,war2},…,{idstusum,warstusum}},其中,idw为第w名学生的学号,warw为第w名学生是否预警;

步骤3.28:对grade14,grade15,grade16分别用xgboost算法进行预测;

步骤3.29:最终学生下学期学业预警数据集forwaring;

步骤3.30:统计数据;

步骤3.31:提供开放web和微信查询端口;

步骤3.32:语音生成音频,网络电话发送给家长、教师和学生。

与现有技术相比,本发明的优点在于:

本发明利用学生的在校学习成绩的历史数据,有效的对学生学业进行预警,增加了学生学业预警的准确率,具体的:本发明利用学生的在校学习成绩的历史数据,首先,对学生成绩数据集的成绩出现不及格、及格、中等、良好、优秀、合格、不合格、缺考以及空,量化为具体的量化数值,分别为55、65、75、85、95、100、50、0和0,进一步结合全校课程数据集的每门课学分,得到学生清洗数据集;然后把全校学生信息数据集和学生清洗数据集组合,得到每个学生的学号、学院编号、班级编号、每个学期的课程分数、每个学期的加权平均分和预警情况,进一步的1为不需要预警,0为需要预警,得到学生统计成绩数据集;接着对学生统计成绩数据集按年级分类,得出每个年级已修所有课程的成绩,得到学生年级数据集,通过xgboost算法对几个年级进行处理,得到学生下学期学业预警数据集;统计数据,提供web和微信查询接口,并把该学生的成绩语音生成音频,以网络电话的方式发送给家长、教师和学生。此外,本发明方法有效预测了学生是否需要学业预警,并为老师和家长提供服务,提高学生学业预警预测的准确度。

附图说明

图1为本发明的总体流程图;

图2为对学生成绩数据清洗的流程图;

图3为使用xgboost算法对学生学业预警和系统功能服务的流程图。

具体实施方式

下面结合附图和具体实施方式,进一步阐明本发明。

如图1-3所示,本发明包括如下步骤:

步骤1:对学生成绩数据集的成绩出现不及格、及格、中等、良好、优秀、合格、不合格、缺考以及空,量化为具体的量化数值,分别为55、65、75、85、95、100、50、0和0,若对于重修的成绩,按照第二次考试的成绩计算分数,得出学生清洗成绩数据集cleaningdata,具体的如图2所示:

步骤1.1:定义resultsdata为学生成绩数据集,resultsdata={{oldsemester1,oldstudentid1,oldcourse1,oldresult1,oldtworesult1},{oldsemester2,oldstudentid2,oldcourse2,oldresult2,oldtworesult2},…,{oldsemesterarticlesum,oldstudentidarticlesum,oldcoursearticlesum,oldresultarticlesum,oldtworesultarticlesum}},其中,articlesum为学生成绩数据集的数据条数,oldsemesteru为第u条成绩所在的学期,oldstudentidu为第u条成绩对应的学生学号,oldcourseu为第u条成绩的课程名称,oldresultu为第u条成绩的结果,oldtworesultu为第u条成绩的补考结果,u∈[1,articlesum];

步骤1.2:定义cleaningdata为学生清洗成绩数据集,cleaningdata={{semester1,studentid1,course1,result1,credit1},{semester2,studentid2,course2,result2,credit2},…,{semesterarticlesum,studentidarticlesum,coursearticlesum,resultarticlesum,creditarticlesum}},其中,semestert为第t条成绩所在的学期,studentidt为第t条成绩的学生学号,courset为第t条成绩的课程名称,resultt为第t条成绩的结果,creditt为第t条成绩的学分,t∈[1,articlesum];

步骤1.3:定义coursedata为课程信息数据集,coursedata={{coursename1,coursecredit1},{coursename2,coursecredit2},…,{coursenamecousum,coursecreditcousum}},其中,cousum为课程总数,collegenamev为第v个课程名称,coursecreditv为第v个课程的学分,v∈[1,cousum];

步骤1.4:定义循环变量r,赋初始值为1,用于循环遍历cleaningdata;

步骤1.5:如果r<=articlesum,执行步骤1.6,否则结束循环,得到清洗成绩数据集cleaningdata;

步骤1.6:semesterr=oldsemesterr,studentidr=oldstudentidr,courser=oldcourser;

步骤1.7:定义循环变量h,赋初始值为1,用于循环遍历coursedata;

步骤1.8:如果coursenameh=courser,执行步骤1.10,否则执行步骤1.9;

步骤1.9:h=h+1,返回步骤1.8;

步骤1.10:creditr=coursecredith;

步骤1.11:如果oldresultr=不及格,resultr=55,执行步骤1.15;如果oldresultr=及格,resultr=65,执行步骤1.15;如果oldresultr=中等,resultr=75,执行步骤1.15;如果oldresultr=良好,resultr=85,执行步骤1.15;如果oldresultr=优秀,resultr=95,执行步骤1.15;如果oldresultr=合格,resultr=100,执行步骤1.15;如果oldresultr=不合格,resultr=50,执行步骤1.15;如果oldresultr=缺考,resultr=0,执行步骤1.15;如果oldresultr=null,resultr=0,执行步骤1.15;如果oldresultr=重修,resultr=0,执行步骤1.15;如果oldresultr=补考,执行步骤1.12;以上条件都不满足则执行步骤1.14;

步骤1.12:如果oldtworesultr=重修,resultr=0,否则执行步骤1.13;

步骤1.13:resultr=oldtworesultr,执行步骤1.15;

步骤1.14:resultr=oldresultr,执行步骤1.15;

步骤1.15:r=r+1,返回步骤1.5。

步骤2:对cleaningdata进行数据预处理,得出学生统计成绩数据集statisticaldata,具体的如图3所示:

步骤2.1:定义studentsinfodata为学生信息数据集,studentsinfodata={{collegeid1,classid1,studentid1,grade1},{collegeid2,classid2,studentid2,grade2},…,{collegeidstusum,classidstusum,studentidstusum,gradestusum}},其中,stusum为学生总人数,collegeidq为第q个学生所在学院的编号,classidq为第q个学生所在班级的编号,studentidq为第q个学生的学号,gradeq为第q个学生的年级,q∈[1,stusum];

步骤2.2:定义statisticaldata为学生统计成绩数据集,statisticaldata={{studentnum1,stucollegeid1,stuclassid1,stugrade1,firstsemester1,secondsemester1,thirdsemester1,fourthsemester1,fifthsemester1,sixthsemester1},{studentnum2,stucollegeid2,stuclassid2,stugrade2,firstsemester2,secondsemester2,thirdsemester2,fourthsemester2,fifthsemester2,sixthsemester2},…,{studentnumstusum,stucollegeidstusum,stuclassidstusum,stugradestusum,firstsemesterstusum,secondsemesterstusum,thirdsemesterstusum,fourthsemesterstusum,fifthsemesterstusum,sixthsemesterstusum}},其中,studentnumk为第k个学生对应的学号,stucollegeidk为第k个学生对应的学院编号,stuclassidk为第k个学生对应的班级编号,stugradek为第k个学生对应的年级,firstsemesterk为第k个学生对应的第一学期成绩的数据集,secondsemesterk为第k个学生对应的第二学期成绩的数据集,thirdsemesterk为第k个学生对应的第三学期成绩的数据集,fourthsemesterk为第k个学生对应的第四学期成绩的数据集,fifthsemesterk为第k个学生对应的第五学期成绩的数据集,sixthsemesterk为第k个学生对应的第六学期成绩的数据集,k∈[1,stusum];

步骤2.3:firstsemesterfirk={firstcoursefirk,firstresultfirk,firstwarningfirk},其中,firstcoursefirk为第一学期第firk个学生的课程数据集,firstresultfirk为第一学期第firk个学生的加权平均分,firstwarningfirk为第一学期第firk个学生的学业预警结果;secondsemesterseck={secondcourseseck,secondresultseck,secondwarningseck},其中,secondcourseseck为第二学期第seck个学生的课程数据集,secondresultseck为第二学期第seck个学生的加权平均分,secondwarningseck为第二学期第seck个学生的学业预警结果;thirdsemesterthik={thirdcoursethik,thirdresultthik,thirdwarningthik},其中,thirdcoursethik为第三学期第thik个学生的课程数据集,thirdresultthik为第三学期第thik个学生的加权平均分,thirdwarningthik为第三学期第thik个学生的学业预警结果;fourthsemesterfouk={fourthcoursefouk,fourthresultfouk,fourthwarningfouk},其中,fourthcoursefouk为第四学期第fouk个学生的课程数据集,fourthresultfouk为第四学期第fouk个学生的加权平均分,fourthwarningfouk为第四学期第fouk个学生的学业预警结果;fifthsemesterfifk={fifthcoursefifk,fifthresultfifk,fifthwarningfifk},其中,fifthcoursefifk为第五学期第fifk个学生的课程数据集,fifthresultfifk为第五学期第fifk个学生的加权平均分,fifthwarningfifk为第五学期第fifk个学生的学业预警结果;sixthsemestersixk={sixthcoursesixk,sixthresultsixk,sixthwarningsixk},其中,sixthcoursesixk为第六学期第sixk个学生的课程数据集,sixthresultsixk为第六学期第sixk个学生的加权平均分,sixthwarningsixk为第六学期第sixk个学生的学业预警结果;

步骤2.4:firstcoursefirc={{firstcoursename1,firstcoursecredit1,firstcourseresult1},{firstcoursename2,firstcoursecredit2,firstcourseresult2},…,{firstcoursenamecousum,firstcoursecreditcousum,firstcourseresultcousum}},其中,firstcoursenamefirci为第一学期第firc个学生第i门课的课程名称,firstcoursecreditfirci为第一学期第firc个学生第i门课的学分,firstcourseresultfirci为第一学期第firc个学生第i门课的成绩,firci∈[1,cousum];secondcoursesecc={{secondcoursename1,secondcoursecredit1,secondcourseresult1},{secondcoursename2,secondcoursecredit2,secondcourseresult2},…,{secondcoursenamecousum,secondcoursecreditcousum,secondcourseresultcousum}},其中,secondcoursenamesecci为第二学期第secc个学生第i门课的课程名称,secondcoursecreditsecci为第二学期第secc个学生第i门课的学分,secondcourseresultsecci为第二学期第secc个学生第i门课的成绩,secci∈[1,cousum];thirdcoursethic={{thirdcoursename1,thirdcoursecredit1,thirdcourseresult1},{thirdcoursename2,thirdcoursecredit2,thirdcourseresult2},…,{thirdcoursenamecousum,thirdcoursecreditcousum,thirdcourseresultcousum}},其中,thirdcoursenamethici为第三学期第thic个学生第i门课的课程名称,thirdcoursecreditthici为第三学期第thic个学生第i门课的学分,thirdcourseresultthici为第三学期第thic个学生第i门课的成绩,thici∈[1,cousum];fourthcoursefouc={{fourthcoursename1,fourthcoursecredit1,fourthcourseresult1},{fourthcoursename2,fourthcoursecredit2,fourthcourseresult2},…,{fourthcoursenamecousum,fourthcoursecreditcousum,fourthcourseresultcousum}},其中,fourthcoursenamefouci为第四学期第fouc个学生第i门课的课程名称,fourthcoursecreditfouci为第四学期第fouc个学生第i门课的学分,fourthcourseresultfouci为第四学期第fouc个学生第i门课的成绩,fouci∈[1,cousum];fifthcoursefifc={{fifthcoursename1,fifthcoursecredit1,fifthcourseresult1},{fifthcoursename2,fifthcoursecredit2,fifthcourseresult2},…,{fifthcoursenamecousum,fifthcoursecreditcousum,fifthcourseresultcousum}},其中,fifthcoursenamefifci为第五学期第fifc个学生第i门课的课程名称,fifthcoursecreditfifci为第五学期第fifc个学生第i门课的学分,fifthcourseresultfifci为第五学期第fifc个学生第i门课的成绩,fifci∈[1,cousum];sixthcoursesixc={{sixthcoursename1,sixthcoursecredit1,sixthcourseresult1},{sixthcoursename2,sixthcoursecredit2,sixthcourseresult2},…,{sixthcoursenamecousum,sixthcoursecreditcousum,sixthcourseresultcousum}},其中,sixthcoursenamesixci为第六学期第sixc个学生第i门课的课程名称,sixthcoursecreditsixci为第六学期第sixc个学生第i门课的学分,sixthcourseresultsixci为第六学期第sixc个学生第i门课的成绩,sixci∈[1,cousum];

步骤2.5:定义循环变量a,赋初始值为1,用于循环遍历studentsinfodata;

步骤2.6:如果a<=stusum,执行步骤2.7,否则结束循环,得到学生统计成绩数据集statisticaldata;

步骤2.7:studentnuma=studentida,stucollegeida=collegeida,stuclassida=classida,stugradea=gradea;

步骤2.8:定义循环变量b,赋初始值为1,用于循环遍历步骤1得到的cleaningdata;

步骤2.9:定义循环变量ca,赋初始值为1,用于循环遍历firstcoursea;定义变量sumcaa和scosumcaa,赋初始值为0,用于计算第a个学生第一学期的加权平均分;定义循环变量cb,赋初始值为1,用于循环遍历secondcoursea;定义变量sumcba和scosumcba,赋初始值为0,用于计算第a个学生第二学期的加权平均分;定义循环变量cc,赋初始值为1,用于循环遍历thirdcoursea;定义变量sumcca和scosumcca,赋初始值为0,用于计算第a个学生第三学期的加权平均分;定义循环变量cd,赋初始值为1,用于循环遍历fourthcoursea;定义变量sumcda和scosumcda,赋初始值为0,用于计算第a个学生第四学期的加权平均分;定义循环变量ce,赋初始值为1,用于循环遍历fifthcoursea;定义变量sumcea和scosumcea,赋初始值为0,用于计算第a个学生第五学期的加权平均分;定义循环变量cf,赋初始值为1,用于循环遍历sixthcoursea;定义变量sumcfa和scosumcfa,赋初始值为0,用于计算第a个学生第六学期的加权平均分;

步骤2.10:如果b<=articlesum,执行步骤2.11,否则执行步骤2.14;

步骤2.11:如果studentnuma=studentidb,执行执行步骤2.12,否则执行步骤2.13;

步骤2.12:如果semesterb=1,firstcoursenameca=courseb,firstcoursecreditca=creditb,firstcourseresultca=resultb,ca=ca+1,scosumcaa=scosumcaa+creditb,sumcaa=sumcaa+creditb*resultb;如果semesterb=2,secondcoursenamecb=courseb,secondcoursecreditcb=creditb,secondcourseresultcb=resultb,cb=cb+1,scosumcba=scosumcba+creditb,sumcba=sumcba+creditb*resultb;如果semesterb=3,thirdcoursenamecc=courseb,thirdcoursecreditcc=creditb,thirdcourseresultcc=resultb,cc=cc+1,scosumcca=scosumcca+creditb,sumcca=sumcca+creditb*resultb;如果semesterb=4,fourthcoursenamecd=courseb,fourthcoursecreditcd=creditb,fourthcourseresultcd=resultb,cd=cd+1,scosumcda=scosumcda+creditb,sumcda=sumcda+creditb*resultb;如果semesterb=5,fifthcoursenamece=courseb,fifthcoursecreditce=creditb,fifthcourseresultce=resultb,ce=ce+1,scosumcea=scosumcea+creditb,sumcea=sumcea+creditb*resultb;如果semesterb=6,sixthcoursenamecf=courseb,sixthcoursecreditcf=creditb,sixthcourseresultcf=resultb,cf=cf+1,scosumcfa=scosumcfa+creditb,sumcfa=sumcfa+creditb*resultb;

步骤2.13:b=b+1,返回步骤2.10;

步骤2.14:firstresulta=sumcaa/scosumcaa,如果firstresulta>=60,firstwarninga=1,否则firstwarninga=0;

步骤2.15:secondresulta=sumcba/scosumcba,如果secondresulta>=60,secondwarninga=1,否则secondwarninga=0;

步骤2.16:thirdresulta=sumcca/scosumcca,如果thirdresulta>=60,thirdwarninga=1,否则thirdwarninga=0;

步骤2.17:fourthresulta=sumcda/scosumcda,如果fourthresulta>=60,fourthwarninga=1,否则fourthwarninga=0;

步骤2.18:fifthresulta=sumcea/scosumcea,如果fifthresulta>=60,fifthwarninga=1,否则fifthwarninga=0;

步骤2.19:sixthresulta=sumcfa/scosumcfa,如果sixthresulta>=60,sixthwarninga=1,否则sixthwarninga=0;

步骤2.20:a=a+1,返回步骤2.6。

步骤3:对statisticaldata的数据按每个年级每个学期的成绩进行分类,通过xgboost算法对预处理后的数据集进行预测处理,得到学生学业预警数据集forwaring,分析处理forwaring的数据并发送预警给相关人员,具体的如图3所示:

步骤3.1:定义gradescores为学生年级成绩数据集,gradescores={grade14,grade15,grade16},其中,gradei为第i年级学生成绩数据集,gradei∈gradescores,i∈[14,16];

步骤3.2:gradei={{xushengidi_1,xueyuanidi_1,banjiidi_1,kechengnamei_1_1,kechengnamei_1_2,…,kechengnamei_1_kcmax,kechengi_1_1,kechengi_1_2,…,kechengscorei_1_kcmax,chengjiscorei_1_1,chengjiscorei_1_2,…,chengjii_1_cjmax,yujingi_1_1,yujingi_1_2,…,yujingi_1_cjmax},{xushengidi_2,xueyuanidi_2,banjiidi_2,kechengnamei_2_1,kechengnamei_2_2,…,kechengnamei_2_kcmax,kechengscorei_2_1,kechengscorei_2_2,…,kechengscorei_2_kcmax,chengjii_2_1,chengjii_2_2,…,chengjii_2_cjmax,yujingi_2_1,yujingi_2_2,…,yujingi_2_cjmax},…,{xushengidi_njmax,xueyuanidi_njmax,banjiidi_njmax,kechengnamei_njmax_1,kechengnamei_njmax_2,…,kechengnamei_njmax_kcmax,kechengscorei_njmax_1,kechengscorei_njmax_2,…,kechengscorei_njmax_kcmax,chengjii_njmax_1,chengjii_njmax_2,…,chengjii_njmax_cjmax,yujingi_njmax_1,yujingi_njmax_2,…,yujingi_njmax_cjmax}},其中,i_njmax为第i年级的学生总数,i_njmax_kcmax为第i年级所有的课程数,i_njmax_cjmax为第i年级当前已完成学期数,xushengidi_j为第i年级第j名学生的学号,xueyuanidi_j为第i年级第j名学生所在学院的编号,banjiidi_j为第i年级第j名学生所在班级的编号,kechengnamei_j_z为i年级第j名学生第z门课程名称,kechengscorei_j_z为i年级第j名学生第z门课程成绩,chengjii_j_m为第i年级第j名学生第m学期加权平均分,yujingi_j_m为第i年级第j名学生第m学期的预警结果,j∈[1,kcmax],z∈[1,njmax],m∈[1,cjmax];

步骤3.3:取步骤2的学生成绩统计数据集statisticaldata;

步骤3.4:定义循环变量x,赋初始值为1,用于循环遍历statisticaldata;

步骤3.5:如果x<=granum,执行步骤3.6,否则执行步骤3.26;

步骤3.6:定义循环变量xa,赋初始值为1,用于循环遍历grade14;定义循环变量xb,赋初始值为1,用于循环遍历grade15;定义循环变量xc,赋初始值为1,用于循环遍历grade16;

步骤3.7:如果stugradex=14,xushengid14_xa=studentnumx,xueyuanid14_xa=stucollegeidx,banjiid14_xa=stuclassidx,chengji14_xa_1=firstresultx,chengji14_xa_2=secondresultx,chengji14_xa_3=thirdresultx,chengji14_xa_4=fourthresultx,chengji14_xa_5=fifthresultx,chengji14_xa_6=sixthresultx,yujing14_xa_1=firstwarningx,yujing14_xa_2=secondwarningx,yujing14_xa_3=thirdwarningx,yujing14_xa_4=fourthwarningx,yujing14_xa_5=fifthwarningx,yujing14_xa_6=ssixthwarningx,执行步骤3.10;

步骤3.8:如果stugradex=15,xushengid15_xb=studentnumx,xueyuanid15_xb=stucollegeidx,banjiid15_xb=stuclassidx,chengji15_xb_1=firstresultx,chengji15_xb_2=secondresultx,chengji15_xb_3=thirdresultx,chengji15_xb_4=fourthresultx,yujing15_xb_1=firstwarningx,yujing15_xb_2=secondwarningx,yujing15_xb_3=thirdwarningx,yujing15_xb_4=fourthwarningx,执行步骤3.15;

步骤3.9:如果stugradex=16,xushengid16_xc=studentnumx,xueyuanid16_xc=stucollegeidx,banjiid16_xc=stuclassidx,chengji16_xc_1=firstresultx,chengji16_xc_2=secondresultx,yujing16_xc_1=firstwarningx,yujing16_xc_2=secondwarningx,执行步骤3.20;

步骤3.10:定义循环变量ya,赋初始值为1,用于循环遍历grade14;

步骤3.11:如果ya<=xa,执行步骤3.12,否则执行步骤3.14;

步骤3.12:如果firstcoursenamex=kechengname14_x_ya,执行步骤3.13,否则ya=ya+1,返回步骤3.11;

步骤3.13:kechengscore14_x_xa=firstcourseresultx,xa=xa+1,执行步骤3.25;

步骤3.14:kechengname15_x_xb=coursenamex,kechengscore15_x_xb=courseresultx,xb=xb+1,执行步骤3.25;

步骤3.15:定义循环变量yb,赋初始值为1,用于循环遍历grade15;

步骤3.16:如果yb<=xb,执行步骤3.17,否则执行步骤3.19;

步骤3.17:如果firstcoursenamex=kechengname15_x_yb,执行步骤3.18,否则yb=yb+1,返回步骤3.16;

步骤3.18:kechengscore15_x_xa=firstcourseresultx,xb=xb+1,执行步骤3.25;

步骤3.19:kechengname15_x_xb=coursenamex,kechengscore15_x_xb=courseresultx,xb=xb+1,执行步骤3.25;

步骤3.20:定义循环变量yc,赋初始值为1,用于循环遍历grade16;

步骤3.21:如果yc<=xc,执行步骤3.22,否则执行步骤3.24;

步骤3.22:如果firstcoursenamex=kechengname16_x_ya,执行步骤3.23,否则yb=yb+1,返回步骤3.21;

步骤3.23:kechengscore16_x_xa=firstcourseresultx,xc=xc+1,执行步骤3.25;

步骤3.24:kechengname16_x_xc=coursenamex,kechengscore16_x_xc=courseresultx,xc=xc+1,执行步骤3.25;

步骤3.25:x=x+1,返回步骤3.5;

步骤3.26:得到学生年级成绩数据结果集gradescores;

步骤3.27:定义最终学生下学期学业预警数据forwaring={{id1,war1},{id2,war2},…,{idstusum,warstusum}},其中,idw为第w名学生的学号,warw为第w名学生是否预警;

步骤3.28:对grade14,grade15,grade16分别用xgboost算法进行预测;

步骤3.29:最终学生下学期学业预警数据集forwaring;

步骤3.30:统计数据;

步骤3.31:提供开放web和微信查询端口;

步骤3.32:语音生成音频,网络电话发送给家长、教师和学生。

为了更好的说明本方法的有效性,抽取淮阴工学院学生的140多万的成绩数据进行分析。首先,对学生成绩数据集的成绩出现不及格、及格、中等、良好、优秀、合格、不合格、缺考以及空,量化为具体的量化数值,分别为55、65、75、85、95、100、50、0和0,进一步结合全校课程数据集的每门课学分,得到学生清洗数据集;然后把全校学生信息数据集和学生清洗数据集组合,得到每个学生的学号、学院编号、班级编号、每个学期的课程分数、每个学期的加权平均分和预警情况,进一步的1为不需要预警,0为需要预警,得到学生统计成绩数据集;接着对学生统计成绩数据集按年级分类,得出每个年级已修所有课程的成绩,得到学生年级数据集,通过xgboost算法对几个年级进行处理,得到学生下学期学业预警数据集;统计数据,提供web和微信查询接口,并把该学生的成绩语音生成音频,以网络电话的方式发送给家长、教师和学生。定义模型参数并赋值为:max_depth=15、eta=0.3、silent=1、objective=binary:logistic、eval_metric=auc,scale_pos_weight=0.15、num_round=40,学生的学业预警结果准确率平均值为96.63%。

本发明可与计算机结合,从而自动完成对学生的学业预警。

本发明创造性的结合了xgboost,能够快速的进行班级学生学业预警,方便高校师生和家长及时了解学生情况。

以上所述仅为本发明的实施例子而已,并不用于限制本发明。凡在本发明的原则之内,所作的等同替换,均应包含在本发明的保护范围之内。本发明未作详细阐述的内容属于本专业领域技术人员公知的已有技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1