R_Studio(教师经济信息)逻辑回归分析的方法和技巧
2023-09-14 08:57:05 时间
使用R语言对"教师经济信息"进行逻辑回归分析
(1)按3:1的比例采用简单随机抽样方法,创建训练集和测试集
(2)用训练集创建逻辑回归模型
(3)用测试集预测贷款结果,并用table统计分类的最终结果
(4)计算 评价指标:总体准确率、准确(分类)率、误分类率、正例的覆盖率、正例的命中率、负例的命中率
(5)采用逐步寻优法后,重新用测试集预测贷款结果,并评估模型
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
setwd('D:\\data') list.files() dat=read.csv(file="bankloan.csv",header=TRUE)[2:701,] #数据命名 colnames(dat)<-c("x1","x2","x3","x4","x5","x6","x7","x8","y") #logistic回归模型 n=nrow(dat) #按3:1的比例采用简单随机抽样方法,创建训练集和测试集 split<-sample(n,n*(3/4)) traindata=dat[split,] testdata=dat[-split,] #用训练集创建逻辑回归模型 glm=glm(y~x1+x2+x3+x4+x5+x6+x7+x8,family=binomial(link=logit),traindata) summary(glm) #用测试集预测贷款结果 predict=predict(glm,type="response",newdata=testdata) res1<-data.frame(testdata$y,predict=ifelse(predict>0.5,1,0)) #用table统计分类的最终结果 table(res1) test<-table(res1) a<-test[1,1] b<-test[1,2] c<-test[2,1] d<-test[2,2] #准确(分类)率=正确预测的正反例数/总数: Accuracy<-(a+d)/(a+b+c+d) #误分类率=错误预测的正反例数/总数: Errorrate<-(b+c)/(a+b+c+d) #正例的覆盖率=正确预测到的正例数/实际正例总数: Recall<-d/(c+d) #正例的命中率=正确预测到的正例数/预测正例总数: Precision<-d/(b+d) # 负例的命中率=正确预测到的负例个数/预测负例总数: Negative<-a/(a+c) print(data.frame(指标=c("准确率","误分类率","正例的覆盖率","正例的命中率","负例的命中率"),值=c(Accuracy,Errorrate,Recall,Precision,Negative))) #####逐步寻优法 logit.step<-step(glm,direction="both") summary(logit.step) #####前向选择法 logit.step<-step(glm,direction="forward") summary(logit.step) #####后向选择法 logit.step<-step(glm,direction="backward") summary(logit.step)
实现过程
(1)按3:1的比例采用简单随机抽样方法,创建训练集和测试集。
split<-sample(n,n*(3/4)) traindata=dat[split,] testdata=dat[-split,]
sample(x,size,replace=F)
x:数据集
size:从对象中抽出多少个数,size应该小于x的规模,否则会报错
replace:默认是F,表示每次抽取后的数就不能在下一次被抽取;T表示抽取过的数可以继续拿来被抽取
(2)用训练集创建逻辑回归模型
glm=glm(y~x1+x2+x3+x4+x5+x6+x7+x8,family=binomial(link=logit),traindata)
summary(glm)
glm(formula, family = gaussian, data, weights, subset,
na.action, start = NULL, etastart, mustart, offset,
control = list(...), model = TRUE, method = "glm.fit",
x = FALSE, y = TRUE, contrasts = NULL, ...)
formula为拟合公式,与函数lm()中的参数formula用法相同;
family用于指定分布族,包括正态分布(gaussian)、二项分布(binomial)、泊松分布(poisson)和伪伽马分布(Gamma);
分布族还可以通过选项link来指定连接函数,默认值为family=gaussian (link=identity),二项分布默认值为family=binomial(link=logit);
data指定数据集
offset指定线性函数的常数部分,通常反映已知信息
control用于对待估参数的范围进行设置
family用于指定分布族,包括正态分布(gaussian)、二项分布(binomial)、泊松分布(poisson)和伪伽马分布(Gamma);
分布族还可以通过选项link来指定连接函数,默认值为family=gaussian (link=identity),二项分布默认值为family=binomial(link=logit);
data指定数据集
offset指定线性函数的常数部分,通常反映已知信息
control用于对待估参数的范围进行设置
(3)用测试集预测贷款结果,并用table统计分类的最终结果
#用测试集预测贷款结果 predict=predict(glm,type="response",newdata=testdata) res1<-data.frame(testdata$y,predict=ifelse(predict>0.5,1,0)) #用table统计分类的最终结果 table(res1) test<-table(res1)
predict(model,newdata)
model:模型,把新的自变量按照变量名放在一个data frame里(newdata)
(4)计算 评价指标:总体准确率、准确(分类)率、误分类率、正例的覆盖率、正例的命中率、负例的命中率
a<-test[1,1] b<-test[1,2] c<-test[2,1] d<-test[2,2] #准确(分类)率=正确预测的正反例数/总数: Accuracy<-(a+d)/(a+b+c+d) #误分类率=错误预测的正反例数/总数: Errorrate<-(b+c)/(a+b+c+d) #正例的覆盖率=正确预测到的正例数/实际正例总数: Recall<-d/(c+d) #正例的命中率=正确预测到的正例数/预测正例总数: Precision<-d/(b+d) # 负例的命中率=正确预测到的负例个数/预测负例总数: Negative<-a/(a+c) print(data.frame(指标=c("准确率","误分类率","正例的覆盖率","正例的命中率","负例的命中率"),值=c(Accuracy,Errorrate,Recall,Precision,Negative)))
(5)采用逐步寻优法后,重新用测试集预测贷款结果,并评估模型
#####逐步寻优法 logit.step<-step(glm,direction="both") summary(logit.step) #####前向选择法 logit.step<-step(glm,direction="forward") summary(logit.step) #####后向选择法 logit.step<-step(glm,direction="backward") summary(logit.step)
?step()
看来学好英语还是很重要的Σ(= = !) 期待中文文档ing!!!
相关文章
- 【玩转 Cloud Studio】记录Vue3+TS+Vite搭建教程
- 【玩转 Cloud Studio】以 Rust 为例定制自己的开发环境
- 【玩转 Cloud Studio】Cloud Studio 开发 Flask 应用
- android的toast提示_android studio unknown host
- Visual Studio 系列调试方法整理
- 在 Visual Studio Code 里让左边文件浏览器里的图标更加美化
- 学习笔记 | Android Studio安卓开发入门经验总结 干货
- Studio One6数字音频工作站(DAW)优缺点介绍
- 【Android FFMPEG 开发】Android Studio 中 配置 FFMPEG 库最小兼容版本 ( undefined reference to 'atof' )
- 【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )
- 【错误记录】Android Studio 编译报错 ( Error:Connection timed out: connect | 更新配置依赖仓库方式 )
- 【错误记录】Android Studio 编译时 lint 检查报错 ( Error: Google Play requires that apps target API level 29 or )
- 【错误记录】Visual Studio 2019 中运行 Unity C# 脚本时报错 ( 根据解决方案, 可能需要安装额外的组件才能获得 | .NET 桌面开发 | 使用 Unity 的游戏开发 )
- Xamarin 对 Visual Studio 用户免费,Xamarin SDK将开源
- Facebook突然关闭了Story Studio,但可能这是盘早就布好的棋
- RT-Thread Studio V2.1.1 新版本发布啦!