学生成绩等级评定python_精品教学案例 | 利用分类模型预测学生成绩等级

本案例通过Python利用Scikit-learn构建分类模型,预测学生成绩等级。数据集包括480个学生记录,16个特征,涉及人口统计、学历背景和行为特征。经过探索性数据分析、数据预处理,模型训练与参数调优,发现决策树模型在K-近邻、逻辑回归和朴素贝叶斯模型中表现最佳,准确率高达73%。决策树模型显示,缺勤天数、在线课程访问次数、举手次数、监护人参与度和查看新公告次数是最重要的预测特征。
摘要由CSDN通过智能技术生成

c9678bfd9cc82f4da259d0b17f40cd9d.png

查看本案例完整的数据、代码和报告请登录数据酷客(http://cookdata.cn)案例板块。

本案例适合作为大数据专业数据科学导引或机器学习实践课程的分类模型章节的实践教学案例。通过本案例,能够达到以下教学效果:

  • 培养学生解决真实问题的能力。基于真实的学生信息和行为特征数据,解决学生成绩预测问题。
  • 加深学生对常用分类模型的理解。具体地,提高K-近邻、逻辑回归、朴素贝叶斯和支持向量机等算法基本原理的认识。
  • 提高动手实践能力。利用Scikit-learn工具,提高学生对上述分类模型的实践能力。

数据来自手机APP"Kalboard 360"的学习管理系统(LMS)。Kalboard 360旨在利用尖端技术来提升学校K12教育的教育水平。数据集由480个学生记录和16个特征组成。这些特征分为三大类:

(1)性别和国籍等人口统计特征。

(2)学历背景特征,如教育阶段,年级和隶属教室。

(3)行为特征,如上课举手,访问资源,家长回答问卷调查,学校满意度等。

该数据集的收集来自两个学期:第一学期收集了245个学生记录,第二学期收集了235个学生记录。最后学生依据其总成绩被分为三类: 低:0-69、中:70-89、高:90-100。我们的任务是根据收集的数据预测学生的成绩等级。

数据字段及说明:

e4b2e13f02c89517e482299583fb782e.png
## 载入必要库
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns

from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split

from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import BernoulliNB
from sklearn.naive_bayes import GaussianNB
from sklearn.naive_bayes import MultinomialNB
from sklearn.svm import LinearSVC
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier

from sklearn.metrics import confusion_matrix, classification_report, accuracy_score

1. 数据读取

# 导入数据
edm = pd.read_csv('./input/xAPI-Edu-Data.csv')
edm.head()

42840363527feb48ad90a72743582b42.png

2. 探索性数据分析

首先,我们来查看一下数据集的基本信息:

## 数据集基本信息
edm.info()

9e0c0acb52b64f048a47960f84558d0b.png

可以看到数据中不存在缺失值,但列名中有些字母大小写不统一,为方便我们统一改为首字母大写,其余小写:

# 修改列名
edm.rename(index=str, columns={'gender':'Gender', 'NationalITy':'Nationality',
                               'raisedhands':'RaisedHands', 'VisITedResources':'VisitedResources'},
                               inplace=True)

接下来我们通过可视化来进一步挖掘数据中包含的信息,首先来看3个成绩等级的数量分布情况:

## 绘制条形图
plt.figure(figsize=(8, 6))
counts = sns.countplot(x='Class', data=edm, palette=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值