赞
踩
数据挖掘期末大作业附加题
一、前提说明:
课程开始时间大概为:2020.10.10;结束时间大概为:2021.1.7;当课程进行到一半时,时间大概为:2020.11.24号;此时,还没有开始进行平时考试,没有计算数据,所以我打算使用四次平时考试的成绩和一次期末考试成绩来预测我们要求的期末成绩。数据集太少我们额外加上期末考试的数据,当做一次普通考试,并且将排名改为等级,由低到高分为四个等级,分别的A,B,C,D,他们的占比分别为:10%,20%,30%,40%。我建立的这个模型只能通过四次成绩预测一下,他们期末考试的等级。
二、结果分析:
1)首先读入数据,我选择的是周一上午的考试,四次平时考试和一次期末考试,在选取适合的列根据SID,进行合并,然后将数据输出为CSV,在CSV文件中将排名转换为对应等级。
2)对于研究预测因子间的相关性,corrplot 包中的corrplot函数提供了很直观的图形方法:(图不太清楚,其实没关系,下面我还要对数据进行处理)
3)数据分配与建模,我们将我们的数据集的70%的数据用来训练模型,剩余的30%用来检验模型预测的结果。数据的量纲实际上是不一样的,另外某些因子间存在高度的相关性,这对我们的建模是不利的,因此我们需要进行一些预处理,我们又需要用到preProcess 函数:我们首先将数值型因子进行了标准化,确保所有的因子在一个量纲上,接着对已经标准化的数据进行主成分分析,消除因子中的高相关性。这里我们不需要SID数据,要进行删除。
对应截图:
4)线性判别分析(LDA):
lda_Model <- train(model_Formula,
data=Train,
method=“lda”,
trControl=modelControl)
Test1 <- Test[,-1]
Test1
l
d
a
P
r
e
d
i
c
t
i
o
n
<
−
p
r
e
d
i
c
t
(
l
d
a
M
o
d
e
l
,
T
e
s
t
1
)
t
a
b
l
e
(
T
e
s
t
ldaPrediction <- predict(lda_Model,Test1) table(Test
ldaPrediction<−predict(ldaModel,Test1)table(Test等级,Test1$ldaPrediction)
说明:主对角线上的数据的对的,也就是产生了1+1+2+4+5=13个错误,还是不错的。
5)随机森林
rf_Model <- train(model_Formula,
data=Train,
method=“rf”,
trControl=modelControl,
ntrees=500)
Test1
r
f
P
r
e
d
i
c
t
i
o
n
<
−
p
r
e
d
i
c
t
(
r
f
M
o
d
e
l
,
T
e
s
t
1
)
t
a
b
l
e
(
T
e
s
t
rfPrediction <- predict(rf_Model,Test1) table(Test
rfPrediction<−predict(rfModel,Test1)table(Test等级,Test1$rfPrediction)
说明:主对角线上的数据的对的,也就是产生了1+1+1+2+7+6=18个错误,还是不错的。
6)对两种模型进行对比:
model_Comparison <-
resamples(list(
LinearDiscrimant=lda_Model,
RandomForest=rf_Model
))
summary(model_Comparison)
bwplot(model_Comparison,layout=c(2,1))
从图上看“线性判别分析(LDA)”比较好,我们可以将“线性判别分析(LDA)”的结果作为我们最终使用的模型
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。