基于数据挖掘的学生成绩分析系统

2020-01-03 10:10李小白黄洪标陈鑫杜平
现代信息科技 2020年16期
关键词:数据挖掘

李小白 黄洪标 陈鑫 杜平

摘  要:教师对学生成绩分析一般仅统计处在优、一般、差的人数,对每位学生具体擅长与不擅长的课程往往无法了解。为了能挖掘出每位学生擅长与不擅长课程,更好地提高教学质量,利用Python语言开发了基于数据挖掘的学生成绩分析系统。使用决策树算法中的CART算法对学生成绩进行分析预测,对决策树进行剪枝降低树的高度防止过拟合,不断优化决策树模型,使分析预测达到一个较为精准的水平,更好地为高校教学服务。

关键词:数据挖掘;决策树算法;成绩分析系统

中图分类号:TP311.13       文献标识码:A 文章编号:2096-4706(2020)16-0082-03

Student Achievement Analysis System Based on Data Mining

LI Xiaobai,HUANG Hongbiao,CHEN Xin,DU Ping

(Guangdong Construction Polytechnic,Guangzhou  511500,China)

Abstract:The analysis and processing of studentsperformance by teachers is only to count the number of students whose performance is in the excellent,general and poor grades. It is often impossible to understand the specific courses that each student is good at or not good at. If the teacher can find out each students good at the curriculum and not good at the curriculum,it will play a positive role in improving the quality of teaching. The student achievement analysis system based on data mining is developed by using Python language. The system uses CART algorithm in decision tree algorithm to analyze and predict the students performance,prunes the decision tree to reduce the height of the tree to prevent over fitting,and constantly adjusts parameters to optimize the decision tree model,so that the analysis and prediction can reach a more accurate level and provide better service for college teaching.

Keywords:data mining;decision tree algorithm;achievement analysis system

0  引  言

為了解决广东建设职业技术学院教师对学生成绩以及偏科情况了解不够清楚的问题,作者采用AngularJS作为前端框架,使用Flask轻量级框架用于前后端交互进行对数据库的访问,设计了基于数据挖掘的学生成绩分析系统,能够根据学生课程成绩以及所在年级的所有学生的课程成绩,通过决策树算法来分析预测某个学生对某门课程的擅长程度。从而直观明了地反映出学生对课程成绩掌握的情况,即达到对学生成绩分析的目的。同时该系统还针对整个班级来分析班级的成绩情况,让班主任也能够直接直观的了解班里的情况,而不是简单的通过Excel统计表来掌握班级学生学习情况,通过Python库提供的画图工具,能简单有效的以各种图形直观的呈现出班级成绩的情况,包括及格人数、优秀人数等等。同时用户还能够对学生课程成绩进行管理,包括对学生课程成绩进行增删改查以及对学生课程成绩按姓名、学号、班级号以及课程名等进行模糊搜索。

通过构建决策树模型,用学生个人成绩以及该名学生所在年级的课程成绩作为训练集的输入,以学生对该门课程的擅长程度作为训练集的输出来训练模型,预测某个学生对他所学课程的擅长程度来实现个人成绩分析。通过对数据库课程成绩表的查询操作并以柱状图的形式直观反映班级的成绩情况来实现班级成绩分析。

1  系统核心功能实现

1.1  用户信息管理

该系统可以对用户进行管理,包括用户的增删改查,用户分为管理员与普通用户,管理员可以管理用户并且具有课程成绩管理权限,包括课程成绩的增删改查,还能进行学生的个人成绩分析,当管理员输入指定学号时,可以得到该学生所学课程成绩的情况,也可以进行班级成绩分析,当管理员输入指定的班级号时,可以得到该班级的成绩情况,包括均分、及格人数以及优秀人数。

用户类定义如下:

class User(db.Model):

__tablename__ = 'user'

__table_args__ = {"useexisting": True}

id = db.Column(db.INT, primary_key=True)

login_name = db.Column(db.String(30), nullable=False)

pass_word = db.Column(db.String(255), nullable=True)

sex = db.Column(db.String(255), nullable=True)

age = db.Column(db.String(255), nullable=True)

role = db.Column(db.String(255), nullable=True)

remark = db.Column(db.String(255), nullable= False,default=1

1.2  课程成绩管理

可以对学生的课程成绩进行管理,包括课程成绩的增删改查,还可以对课程成绩进行模糊搜索,用户输入指定的课程号、学号或者学生姓名等均可以进行模糊搜索,并且当用户在添加课程情况的编辑框输入学生课程成绩时,系统会添加相应的学生课程成绩。同时添加删除之后在界面上会立即显示添加删除后的情况,界面会显示所有的课程信息。

课程成绩类定义如下:

class gradeList(db.Model):

__tablename__ = 'grade_list'

__table_args__ = {"useexisting": True}

id = db.Column(db.INT, primary_key=True)

grade = db.Column(db.String(255), nullable=True)

college = db.Column(db.String(255), nullable=True)

special = db.Column(db.String(255), nullable=True)

className = db.Column(db.String(255), nullable=True)

studentId = db.Column(db.String(255), nullable=True)

studentName = db.Column(db.String(255), nullable=True)

course = db.Column(db.String(255), nullable=True)

score = db.Column(db.INT, nullable=True)

1.3  學生个人成绩分析实现

采用决策树算法对学生个人成绩进行分析,当用户在编辑框里输入指定学生的学号时,例如输入1904050713,系统以柱状图的形式反馈出该学生对他所学的各科目的擅长情况,并给出提示语,告知用户该学生所学课程的擅长情况以及具体分数,柱状图给人以直观的感觉,让用户一眼就能知道该学生的课程擅长情况,同时采用决策树算法比普通的SQL分析具有更为可靠的优点,学号为1904050713的学生个人成绩分析效果如图1所示。

决策树关键代码部分:

y_train = []

if data_user:

for each in data_user:

each_tmp = []

each_tmp.append(str(each[0]).replace("xm", ""))

each_tmp.append(course_dict.get(str(each[1])))

if float(each[2])>80:

each_tmp.append(1)

else:

each_tmp.append(0)

y_train.append(each_tmp)

sql_user = "select studentId,grade_list.course as course,score from grade_list where studentId = '{0}'; ".format('1904050713 ')

cursor.execute(sql_user)

data_user = cursor.fetchall()

x_test = []

if data_user:

for each in data_user:

each_tmp = []

each_tmp.append(course_dict.get(str(each[1])))

each_tmp.append(str(each[2]))

x_test.append(each_tmp)

estimator = DecisionTreeClassifier(criterion="entropy")

estimator.fit(x_train, y_train)

joblib.dump(estimator, "train_model.m")

y_predict = estimator.predict(x_test)

1.4  班级成绩分析

采用对数据库的查询操作来实现对班级成绩的分析,当用户在编辑框里输入指定班级的班号,例如作者所教的19级软件7班,系统以柱状图的形式反馈出本班级学生的课程成绩情况以及班级每门课的均分,班级85分以上人数以及班级不及格人数并能把图片保存下来供长期的研究分析。19级软件7班的班级成绩分析图如图2所示。

班级成绩分析关键代码:

cursor = db.cursor()

sql_user = "select studentId,grade_list.course as course, score from grade_list join (select course from grade_list where studentId = '{0}')t ongrade_list.course = t.course;".format('19级软件7班')

cursor.execute(sql_user)

data_user = cursor.fetchall()

course_dict = {}

course_dict_2 = {}

i = 1

if data_user:

for each in data_user:

each_tmp = []

if not course_dict.get(str(each[1])):

course_dict.update({str(each[1]):i})

course_dict_2.update({i:str(each[1])})

i = i+1

each_tmp.append(course_dict.get(str(each[1])))

each_tmp.append(str(each[2]))

2  结  论

本着服务广东建设职业技术学院教师的理念,帮助解决学生偏科问题,开发了基于数据挖掘的学生成绩分析系统。该系统通过决策树算法来实现对学生個人成绩进行预测的功能,以及对整个班级各门课程成绩进行分析,让任课教师、教务管理人员以及班主任一目了然掌握学生的成绩情况,更好地开展以后的教育教学。

参考文献:

[1] 王灿.基于数据挖掘算法的成都市流动人口状况研究 [J].经济研究导刊,2020(3):129-131+153.

[2] 胡涛.基于关联规则的数据挖掘算法 [J].电子技术与软件工程,2018(2):186.

[3] 潘燕.关联规则下的数据挖掘算法分析 [J].信息记录材料,2018,19(7):212-213.

[4] 杨铭.入侵检测中常用数据挖掘算法的分析与研究 [J].无线互联科技,2014(11):127.

[5] 张容,张勇.基于数据挖掘算法的电子图书馆智能推荐技术研究 [J].西南师范大学学报(自然科学版),2017,42(7):81-85.

作者简介:李小白(1981—),女,汉族,海南临高人,中级职称,硕士在读,研究方向:计算机应用。

猜你喜欢
数据挖掘
近十年国内教育数据挖掘领域的应用技术分析
数据挖掘技术在内河航道维护管理中的应用研究
数据挖掘技术在物流企业中的应用
数据挖掘过程模型及创新应用
数据挖掘综述
软件工程领域中的异常数据挖掘算法
基于R的医学大数据挖掘系统研究
电子政务中基于云计算模式的数据挖掘研究
数据挖掘创新应用
数据挖掘的系统构成与发展趋势