数据挖掘与数据分析 第三章课后习题及答案_第1页
数据挖掘与数据分析 第三章课后习题及答案_第2页
数据挖掘与数据分析 第三章课后习题及答案_第3页
数据挖掘与数据分析 第三章课后习题及答案_第4页
数据挖掘与数据分析 第三章课后习题及答案_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章课后习题答案详解1.现有一关于葡萄酒品质的数据集“winequality-red”(该数据集下载网址/datasets/uciml/red-wine-quality-cortez-et-al-2009),包含了12个项目(1-固定酸度,2-挥发性酸度,3-柠檬酸,4-残余糖,5-氯化物,6-自由二氧化硫量,7-二氧化硫总量,8-密度,9-pH值,10-硫酸盐,11-酒精浓度,和12-品质(0-10分),以R语言为分析工具,构建葡萄酒品质的预测模型。答:该数据集共有1599条数据,记录了不同品牌葡萄酒的数据,数据集中各个参数的含义如下表1所示:表1winequality-red数据集参数说明符号符号说明fixed.acidity固定酸度volatile.acidity挥发性酸度citric.acid柠檬酸residual.sugar残余糖chlorides氯化物free.sulfur.dioxide自由二氧化硫量total.sulfur.dioxide二氧化硫总量density密度pHpH值sulphates硫酸盐alcohol酒精浓度quality品质(0-10分)回归模型的建立及检验过程:读取数据:#读取数据WQR<-read.csv("C:\\Users\\HP\\Desktop\\winequality-red.CSV")head(WQR)输出:fixed.acidityvolatile.aciditycitric.acidresidual.sugarchloridesfree.sulfur.dioxide17.40.700.001.90.0761127.80.880.002.60.0982537.80.760.042.30.09215411.20.280.561.90.0751757.40.700.001.90.0761167.40.660.001.80.07513total.sulfur.dioxidedensitypHsulphatesalcoholquality1340.99783.510.569.452670.99683.200.689.853540.99703.260.659.854600.99803.160.589.865340.99783.510.569.456400.99783.510.569.45绘制散点图,初步确定变量之间的相关性:par(mfrow=c(3,4),mai=c(.6,.6,.3,.3))plot(quality~fixed.acidity,data=WQR)plot(quality~volatile.acidity,data=WQR)plot(quality~citric.acid,data=WQR)plot(quality~residual.sugar,data=WQR)plot(quality~chlorides,data=WQR)plot(quality~free.sulfur.dioxide,data=WQR)plot(quality~total.sulfur.dioxide,data=WQR)plot(quality~density,data=WQR)plot(quality~pH,data=WQR)plot(quality~sulphates,data=WQR)plot(quality~alcohol,data=WQR)结果如下图1-1所示:图1-1数据集“winequality-red”中各变量与quality之间的散点图由各个变量与quality的散点图可以看出,quality与各个变量之间无明显的线性关系。使用lm函数建立线性回归模型:m1=lm(quality~.,data=WQR)m1输出:得到的回归模型为:quality=21.97+0.02fixed.acidity−1.08volatile.acidity−0.18citric.acid+0.02residual.sugar−1.87chlorides−17.88density−0.41pH+0.92sulphates+0.28alcohol对模型进行F检验与t检验:R中summary函数可以完成F统计量与t统计量的计算:summary(m1)输出:#参考F统计量值qf(0.95,11,1587)输出:1.794671#参考t统计量值qt(0.975,1587)输出:[1]1.96146结果中第三列数字为t统计量的值,在该样本上对应的t统计量理论参考值为1.96,volatile.acidity、chlorides、free.sulfur.dioxide、total.sulfur.dioxide、pH、sulphates、alcohol的t大于该样本下的理论值,即检验表明quality与volatile.acidity、chlorides、free.sulfur.dioxide、total.sulfur.dioxide、pH、sulphates、alcohol之间有着较为显著的相关关系,最后一行指出了F检验的值,大于该样本下的理论参考值(1.79),表明回归模型总体上是显著的。可以发现,t检验的结果与之前由散点图得出的初步结论并不完全一致。判断各个自变量之间的相关关系:cor(WQR)输出:由以上结果可以发现,模型不存在多重共线问题。为了保证删除一些自变量后模型仍然具有较好的拟合效果,进行全子集回归:library(leaps)x<-WQR[,1:11]y<-WQR[,12]out<-summary(regsubsets(x,y,nbset=2,nvmax=ncol(x)))tab<-cbind(out$which,out$rsq,out$adjr2,out$cp)tab输出:基于以上结果,可以使用volatile.acidity、chlorides、pH、sulphates、alcohol作为最终的自变量构建线性回归模型:m2=lm(quality~volatile.acidity+chlorides+pH+sulphates+alcohol,data=WQR)summary(m2)输出:显然,F统计量与t统计量的值比最初建立的模型m1更大,表明新模型m2的总体显著性与回归系数显著性均较高,此时的回归方程为:quality=4.01−1.07volatile.acidity−1.93cℎlorides−0.42pH+0.85sulpℎates+0.31alcoℎol为了确定模型的回归效果是否显著,现进行交叉验证回归。n<-length(WQR$quality)diff<-dim(n)percdiff<-dim(n)for(kin1:n){train1<-c(1:n)train<-train1[train1!=k]m3<-lm(quality~volatile.acidity+chlorides+pH+sulphates+alcohol,data=WQR[train,])pred<-predict(m3,newdat=WQR[-train,])obs<-WQR$quality[-train]diff[k]<-obs-predpercdiff[k]<-abs(diff[k])/obs}me<-mean(diff)rmse<-sqrt(mean(diff**2))mape<-100*mean(percdiff)mermsemape输出:-0.00033484830.654919.383173使用R中caret包的trainControl()函数实现此过程:library(caret)train.control<-trainControl(method="LOOCV")model<-train(quality~volatile.acidity+chlorides+pH+sulphates+alcohol,data=WQR,method="lm",trControl=train.control)print(model)输出:经过交叉验证回归,得出的平均误差为-0.0003,均方根误差(RMSE)为0.65,平均绝对百分比误差为9.38%,样本决定系数(R22.根据某所中学数学和葡萄牙语课程学生的家庭,生活,学习,成绩信息数据集“student-mat”及“student-por”(该数据集的下载网址为/code/mohaiminul101/student-grade-prediction-and-eda/data),以R语言为分析工具,分析学生成绩分布的特点,找出影响学生成绩的主要因素,构建学生成绩的预测模型。答:该数据集为两所葡萄牙学校的中学学生的学习成绩。数据属性包括:学生成绩、人口统计学、社会和与学校相关的特征,并通过使用学校报告和调查表进行收集。提供了两个关于两个不同学科表现的数据集:数学(mat)和葡萄牙语(por)。两个数据集均有33个相同属性,各个参数的含义如下表2所示:表2数据集参数说明符号符号说明school学校(二分类变量:GP-GabrielPereira或MS-MousinhodaSilveira)sex性别-学生的性别(二分类变量:F-女性或M-男性)age年龄-学生的年龄(数字:15至22)address地址-学生的家庭住址类型(二分类变量:U-城市或R-农村)famsize家庭成员数量(二分类变量:LE3-小于或等于3或GT3-大于3)Pstatus父母的同居状态(二分类变量:T-同居或A-分开)Medu母亲的教育程度(数字:0-无,1-初等教育,2-5至9年级,3-中等教育或4-高等教育)Fedu父亲的教育(数字:0-无,1-初等教育,2-5至9年级,3-中等教育或4-高等教育)Mjob母亲的工作(教师、与健康有关的、民事服务(例如行政或警察)、在家或其他)Fjob父亲的工作(教师、与健康有关的、民事服务(例如行政或警察)、在家或其他)reason理由-选择这所学校的理由(名义:接近家,学校声誉,课程偏好或其他)guardian监护人-学生的监护人(字符:母亲,父亲或其他)traveltime学校到学校的旅行时间(数字:1-小于15分钟,2-15至30分钟,3-30分钟至1小时,4-大于1小时)studytime学习时间-每周学习时间(数字:1-小于2小时2-2至5小时,3-5至10小时或4-大于10小时)failures失败-过去失败的次数schholsup额外的教育支持(二分类变量:是或否)paid家庭教育支持(二分类变量:是或否)activities课外活动(二分类变量:是或否)nursery托儿所-上托儿所(二分类变量:是或否)higher是否想要接受高等教育(二分类变量:是或否)internet在家上网(二分类变量:是或否)romantic是否恋爱(二分类变量:是或否)famrel家庭关系(数字:从1-非常差到5-极好)freetime放学后的空闲时间(数字:从1-非常低到5-非常高)goout与朋友外出(数字:从1-非常低到5-非堂高)Dalc工作日酒精消耗(数字:从1-非常低到5-非常高)Walc周末酒精消耗(数字:从1-非常低至5-非常高)health当前的健康状况(数字:从1-非常差到5-非常好)absences缺勤数(数字:0到93)G1第一期成绩(数字:0至20)G2第二学期成绩(数字:0至20)G3最终成绩(数字:0到20,输出目标)2.1student-mat数据集读取数据:mat<-read.csv("C:\\Users\\HP\\Desktop\\student-mat.csv")head(mat)输出:数据预处理:#导入相应的数据包library(mice)library(VIM)md.pattern(mat)输出:#无缺失值#仅保留数值型变量library(dplyr)library(psych)dataend<-select(mat,c("school","sex","address","famsize","Pstatus","Mjob","Fjob","reason","guardian","schoolsup","famsup","paid","activities","nursery","higher","internet","romantic"))#数据分析describe(mat)输出:summary(mat)输出:分析属性:#利用图表分析属性hist(mat$G3,breaks=15,col="red",xlab="期末成绩",ylab="人数统计",main="成绩分布图")rug(jitter(dataend$G3))输出:可以看出得10分和11分的学生数量很多,虽然这只是一个中等成绩,大部分学生的成绩分布在8-15分之间。更值得注意的是,有接近40个人得了0分。#数据转化mat[,c("school","sex","address","famsize","Pstatus","Mjob","Fjob","reason","guardian","schoolsup","famsup","paid","activities","nursery","higher","internet","romantic")]<-lapply(mat[,c("school","sex","address","famsize","Pstatus","Mjob","Fjob","reason","guardian","schoolsup","famsup","paid","activities","nursery","higher","internet","romantic")],factor)str(mat)输出:判断变量之间的相关性:#初步确定变量之间的相关性library(corrgram)corrgram(mat,order=TRUE,lower.panel=panel.shade,upper.panel=panel.pie,text.panel=panel.txt,main="Corrgramofstudent_mathintercorrelations")输出:剔除G1、G2的影响:#剔除G1&G2的影响mat_1<-mat[,-(31:32)]corrgram(mat_1,order=TRUE,lower.panel=panel.shade,upper.panel=panel.pie,text.panel=panel.txt,main="Corrgramofstudent_mathintercorrelations")输出:可以看出age&failures和G3的相关度较明显,且变量之间也有明显相关关系如Dalc和Walc,Medu和Fedu。建立线性回归模型:#使用lm函数建立线性回归模型model<-lm(mat_1$G3~.,data=mat_1)summary(model)输出:#使用lm函数建立线性回归模型model<-lm(mat_1$G3~.,data=mat_1)summary(model)输出:#参考F统计量值qf(0.95,39,355)#参考t统计量值qt(0.975,355)输出:1.433681.966669由分析结果可知sex,failures,schoolsup,romantic,freetime与G3显著相关,检验的结果与之前得出的初步结论并不完全一致。多重共线性检验:library(car)vif(model)输出:自变量对应的VIF值均小于10,现有模型不存在多重共线性。基于以上操作,构建线性回归模型为model2<-lm(G3~sex+failures+schoolsup+romantic+freetime+goout,data=mat_1)summary(model2)输出:得到最终回归方程模型G3=11.8876-2.13failures+0.8755sexM+-0.9015romanticyes-0.4642goout交叉验证:#交叉验证回归library(ggplot2)library(lattice)library(caret)train.control<-trainControl(method="LOOCV")model<-train(G3~sex+failures+schoolsup+romantic+freetime+goout,data=mat_1,method="lm",trControl=train.control)print(model)输出:

2.2数据集student-por#数据读取por<-read.csv("D:/DataAnalysisModelingDecisions/student-por.csv")por[1:5,]输出:数据总体分析:library(psych)describe(por)head(por)summary(por)利用图表分析属性:hist(por$G3,breaks=10,col="red",xlab="期末成绩",ylab="人数统计",main="成绩分布图")输出:可以看出得11分左右的学生数量很多,虽然这只是一个中等成绩,大部分学生的成绩分布在8-16分之间。更值得注意的是,有接近20个人得了0分。批量转化为因子型:por[,c("school","sex","address","famsize","Pstatus","Mjob","Fjob","reason","guardian","schoolsup","famsup","paid","activities","nursery","higher","internet","romantic")]<-lapply(por[,c("school","sex","address","famsize","Pstatus","Mjob","Fjob","reason","guardian","schoolsup","famsup","paid","activities","nursery","higher","internet","romantic")],factor)str(por)输出:绘制散点图,初步确定变量之间的相关性:par(mfrow=c(3,2),mai=c(.6,.6,.3,.3))plot(G3~age,data=por)plot(G3~sex,data=por)plot(G3~school,data=por)plot(G3~address,data=por)plot(G3~famsize,data=por)plot(G3~Pstatus,data=por)plot(G3~Medu,data=por)plot(G3~Fedu,data=por)plot(G3~Mjob,data=por)plot(G3~Fjob,data=por)plot(G3~reason,data=por)plot(G3~guardian,data=por)plot(G3~traveltime,data=por)plot(G3~studytime,data=por)plot(G3~failures,data=por)plot(G3~schoolsup,data=por)plot(G3~famsup,data=por)plot(G3~paid,data=por)plot(G3~activities,data=por)plot(G3~nursery,data=por)plot(G3~higher,data=por)plot(G3~internet,data=por)plot(G3~romantic,data=por)plot(G3~famrel,data=por)plot(G3~freetime,data=por)plot(G3~goout,data=por)plot(G3~Dalc,data=por)plot(G3~Walc,data=por)plot(G3~health,data=por)plot(G3~absences,data=por)部分结果如下图2-1所示:图2-1部分结果图由上图2-1可以看出G3与school和higher之间存在线性关系。使用lm函数建立线性回归模型,分析成绩G3与哪些因素有关:m2=lm(por$G3~.,data=por[,-(31:33)])summary(m2)m2输出:对模型进行F检验与t检验:R中summary函数可以完成F统计量与t统计量的计算:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论