查看本案例完整的数据、代码和报告请登录数据酷客(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。我们的任务是根据收集的数据预测学生的成绩等级。
数据字段及说明:
## 载入必要库
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()
2. 探索性数据分析
首先,我们来查看一下数据集的基本信息:
## 数据集基本信息
edm.info()
可以看到数据中不存在缺失值,但列名中有些字母大小写不统一,为方便我们统一改为首字母大写,其余小写:
# 修改列名
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=