R语言实例:基于Boston数据集的数据分析报告——用logistic回归、LDA(线性判。。。

更新时间:2023-07-10 02:45:31 阅读: 评论:0

R语⾔实例:基于Boston数据集的数据分析报告——⽤logistic回归、LDA(线性
中药治阳痿早泄
判。。。
⽂章⽬录
问题
请分析 Boston 数据集,并撰写⼀个数据分析报告。
在报告中主要分析并回答以下两个问题。
⽤ logistic 回归、LDA(线性判别法)、K 临近法(k=1 和 k=5)构建分类模型。⽬的是预测⼀个区域的犯罪率是否⾼于所有犯罪率的中位数。
在构建每种类型的模型时,请分别选择三组(三个不同⼦集的)⾃变量。从三组⾃变量构造的模型中分别选出⼀个你认为最好的,你的选择应当基于交叉验证法。请讨论你得到的结果。
⽤最优⼦集的⽅法构建回归模型,预测⼀个区域的犯罪率。
Boston 数据集
查看数据集
> library(MASS)
> head(Boston)# 查看数据前6⾏
crim zn indus chas  nox    rm  age    dis rad tax ptratio  black lstat medv
10.00632182.3100.5386.57565.24.0900129615.3396.904.9824.0
20.0273107.0700.4696.42178.94.9671224217.8396.909.1421.6
30.0272907.0700.4697.18561.14.9671224217.8392.834.0334.7
40.0323702.1800.4586.99845.86.0622322218.7394.632.9433.4
50.0690502.1800.4587.14754.26.0622322218.7396.905.3336.2
60.0298502.1800.4586.43058.76.0622322218.7394.125.2128.7
数据描述
在命令⾏中输⼊?Boston
命令,Rstudio 界⾯出现该数据集的解释界⾯,如图所⽰:
Boston 数据集描述波⼠顿郊区的房价,该数据集共506⾏、14列。
变量
含义crim
城镇⼈均犯罪率zn
25000平⽅英尺以上地块的住宅⽤地⽐例indus
每个城镇的⾮零售业务⾯积⽐例chas
Charles River 哑变量(如果道沿河⽽⾏,该项数值为 1,否则为0)nox
氮氧化物浓度(千万分之⼀)rm
每个住宅的平均房间数age
1940年以前建造的⾃有住房⽐例dis
五个波⼠顿就业中⼼距离的加权平均数rad
辐射状公路通达性指数tax
按每10,000美元计算的全值物业税税率ptratio
城镇师⽣⽐例black
,其中是城镇⿊⼈的⽐例lstat
底层阶级⼈⼝占⽐(%)medv 业主⾃住住宅的中位价值(以1000美元为单位)
构建分类模型
脾虚便溏
数据可视化
通过查看数据描述,我们知道了每个变量的含义。通过数据可视化,我们可以快速知道数据分布情况,便于下⼀步构造模型。查看 crim 变量,绘制箱线图。因为数值多分布在0-1范围内,所以在该箱线图中,对y轴的显⽰取对数,便于更⽅便地观察数据。
1000(Bk −0.63)2Bk
boxplot <- boxplot(Boston$crim,outline = T,log="y")
boxplot$stats
abline(h=boxplot$stats[1,],lwd=1,col=2,asp =2,lty =2)
text(1.25,boxplot$stats[1,],"minimum=0.00632", col =2,adj=c(0,-0.4))
abline(h=boxplot$stats[2,],lwd=1,col=2,asp =2,lty =2)
text(1.25,boxplot$stats[2,],"Q1=0.08199", col =2,adj=c(0,-0.4))
电影香水abline(h=boxplot$stats[3,],lwd=1,col=2,asp =2,lty =2)
text(1.25,boxplot$stats[3,],"median=0.25651", col =2,adj=c(0,-0.4))
abline(h=boxplot$stats[4,],lwd=1,col=2,asp =2,lty =2)
text(1.25,boxplot$stats[4,],"Q3=3.67822", col =2,adj=c(0,-0.4))
abline(h=boxplot$stats[5,],lwd=1,col=2,asp =2,lty =2)
text(1.25,boxplot$stats[5,],"maximum=8.98296", col =2,adj=c(0,-0.4))
logistic 分类模型
构建分类模型的因变量
构建 logistic 分类模型的因变量,该因变量是⼆分类的。我们将⾼于犯罪率(crim)中位数的项记为“1”,否则为“0”。dt <- Boston# 将 Boston 赋值给 dt
# 构建新变量 crim_bi
# crim_bi:⾼于 crim 中位数的项记为“1”, 否则为“0”
dt$crim_bi <- ifel(dt$crim > median(dt$crim),1,0)
构建三个不同⾃变量的模型
#### 构建3个模型 ####
log.fit <- glm(crim_bi ~ zn+indus+chas+nox+rm+age+dis+rad+tax+ptratio+black+lstat+medv,              data = dt , family ="binomial")
summary(log.fit)
log.fit2 <- glm(crim_bi ~ zn+indus+nox+age+dis+rad+tax+ptratio+black+medv,
data = dt , family ="binomial")
summary(log.fit2)
log.fit3 <- glm(crim_bi ~ zn+nox+age+dis+rad+tax+ptratio+black+medv,
data = dt , family ="binomial")
summary(log.fit3)教师素质
交叉验证
进⾏交叉验证,将准确率作为衡量标准。
fold_log <-function(log.fit,dt){
library(caret)
t.ed(3)
folds <- createFolds(y=dt[,10],k=10)
accuracy <- as.numeric()
for(i in1:10){
fold_test <- dt[folds[[i]],]#取folds[[i]]作为测试集
fold_train <- dt[-folds[[i]],]# 剩下的数据作为训练集
公文写作万能模板
fold_pre<- predict(log.fit,fold_test,type ="respon")
log.class <- ifel(fold_pre >0.5,1,0)
a <- table(log.class, fold_test$crim_bi)
accuracy <- append(accuracy,(a[1]+a[4])/sum(a))
}
return(mean(accuracy))
}
fold_log(log.fit,dt)
fold_log(log.fit2,dt)
fold_log(log.fit3,dt)
结果分析
> fold_log(log.fit,dt)
[1]0.9150087
> fold_log(log.fit2,dt)
[1]0.9229287
审计工作> fold_log(log.fit3,dt)
[1]0.9090433
0.9229287
由输出结果可知,log.fit2 即第⼆个模型的准确率更⾼,为。
LDA 回归模型
同理,
lda <- lda(crim_bi ~ zn+indus+chas+nox+rm+age+dis+rad+tax+ptratio+black+lstat+medv,
data = dt)
lda2 <- lda(crim_bi ~ zn+indus+nox+age+dis+rad+tax+ptratio+black+medv,
data = dt)
lda3 <- lda(crim_bi ~ zn+nox+age+dis+rad+tax+ptratio+black+medv,
data = dt)
fold_lda <-function(lda,dt){
library(caret)
t.ed(3)
folds <- createFolds(y=dt[,10],k=10)
accuracy <- as.numeric()
for(i in1:10){
毛豆烧鸡fold_test <- dt[folds[[i]],]#取folds[[i]]作为测试集
fold_train <- dt[-folds[[i]],]# 剩下的数据作为训练集
fold_pre<- predict(lda,fold_test)
a <- table(predict(lda,fold_test)$class, fold_test$crim_bi)
accuracy <- append(accuracy,(a[1]+a[4])/sum(a))
}
return(mean(accuracy))
}
fold_lda(lda,dt)
fold_lda(lda2,dt)
fold_lda(lda3,dt)
结果分析
> fold_lda(lda,dt)
[1]0.8556253
> fold_lda(lda2,dt)
[1]0.8575861
> fold_lda(lda3,dt)
[1]0.8635469
0.8635469
由输出结果可知,lda3 即第三个模型的准确率更⾼,为。
K 临近模型
#### 模型1 ####
# k=1
library(kknn)
library(caret)
t.ed(3)
folds <- createFolds(y=dt[,10],k=10)
accuracy <- as.numeric()
for(i in1:10){
fold_test <- dt[folds[[i]],]#取folds[[i]]作为测试集
fold_train <- dt[-folds[[i]],]# 剩下的数据作为训练集
knn <- kknn(crim_bi ~ zn+indus+chas+nox+rm+age+dis+rad+tax+ptratio+black+lstat+medv,              fold_train,fold_test,k=1)
pre_knn <- fitted(knn)
pre_knn <- ifel(pre_knn >0.5,1,0)
日本夏日祭a <- table(pre_knn, fold_test$crim_bi)
accuracy <- append(accuracy,(a[1]+a[4])/sum(a))
}
mean(accuracy)
# k=5
t.ed(3)
folds <- createFolds(y=dt[,10],k=10)
accuracy <- as.numeric()
for(i in1:10){
fold_test <- dt[folds[[i]],]#取folds[[i]]作为测试集
fold_train <- dt[-folds[[i]],]# 剩下的数据作为训练集
knn <- kknn(crim_bi ~ zn+indus+chas+nox+rm+age+dis+rad+tax+ptratio+black+lstat+medv,              fold_train,fold_test,k=5)
pre_knn <- fitted(knn)

本文发布于:2023-07-10 02:45:31,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1075168.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   模型   作为   住宅   构建   变量   结果
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图