R_Studio(教师经济信息)逻辑回归分析的方法和技巧
使用R语言对"教师经济信息"进行逻辑回归分析
(1)按3:1的比例采用简单随机抽样方法,创建训练集和测试集
(2)用训练集创建逻辑回归模型
(3)用测试集预测贷款结果,并用table统计分类的最终结果
(4)计算 评价指标:总体准确率、准确(分类)率、误分类率、正例的覆盖率、正例的命中率、负例的命中率
(5)采用逐步寻优法后,重新用测试集预测贷款结果,并评估模型
- 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)
Gary.R
实现过程
(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)
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!!!
R_Studio(教师经济信息)逻辑回归分析的方法和技巧的更多相关文章
- 竞价广告系统-逻辑回归优化方法-L-BFGS
逻辑回归优化方法-L-BFGS 逻辑回归的优化方法是一个经典的问题,如果我们把它视为一个最大熵模型,那么我们知道最早的优化方法是IIS,这个方法就不细讲了,因为它速度很慢.后来发现在最优化领域中非常常 ...
- [Q]“获取AutoCAD安装信息时失败...”解决方法
“获取AutoCAD安装信息时失败...”解决方法:在“setup.exe”上右键,以管理员权限运行即可.
- [转载]织梦CMS首页调用分类信息栏目及列表方法
原文地址:织梦CMS首页调用分类信息栏目及列表方法作者:小武哥 不懂代码,搜索学习一晚上,都是说调用特定栏目分类信息列表的,用这个代码 {dede:arclistsg row='10' titlele ...
- 利用Filter和拦截器,将用户信息动态传入Request方法
前言: 在开发当中,经常会验证用户登录状态和获取用户信息.如果每次都手动调用用户信息查询接口,会非常的繁琐,而且代码冗余.为了提高开发效率,因此就有了今天这篇文章. 思路: 用户请求我们的方法会携带一 ...
- 这里给大家介绍一下通过 Wi-Fi 连接“慷慨捐赠”你的身份信息的七种方法.
这里给大家介绍一下通过 Wi-Fi 连接“慷慨捐赠”你的身份信息的七种方法和反制措施. 本文作者:黑子小盆友 1.利用免费热点 它们似乎无处不在,而且它们的数量会在接下来四年里增加三倍.但是它们当中很 ...
- Win7系统与它的Virtualbox中安装的Ubuntu14.04共享信息的几种方法
虚拟机是每一个程序猿必备的工具.本文依据最新版VirtualBox用户手冊的提示,通过自己的亲自实践,给出了Win7系统与执行在当中的VirtualBox 5.0.2中的Ubuntu 14.04共享信 ...
- YUV420数据和字符信息如何利用滤镜方法进行编码?
YUV420数据和字符信息如何利用滤镜方法进行编码?我希望用ffmpeg中的filter方法,把YUV420数据和字符信息一起编码,该怎么办呢? 本人目前只实现了把yuv420的数据进行h.264的编 ...
- Object Pascal 方法与技巧
4 方法与技巧 4.1 设置代码模板 代码模板是Delphi 的代码感知特性的一种,通过它可以快速.高效和正确地输入代码.代码模板将一些常用的语句块保存在模板中,然后程序员只要在代码编辑器中按下“Ct ...
- 性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧
性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对 ...
随机推荐
- 字符串转数组(php版)
思路: 1.判断当前传来的值是否为数组 2.若不是现将传来的值转换为字符串类型 3.判断当前值是否为空 4.若不为空,采用正则进行匹配,如下图 preg_match('/^{.*?}$/', $str ...
- 使用Keras基于AdvancedEAST的场景图像文本检测
Blog:https://blog.csdn.net/linchuhai/article/details/84677249 GitHub:https://github.com/huoyijie/Adv ...
- Postman之前言
Postman是一款流行的接口api调试/测试工具.几乎可以发送大多数的HTTP请求. 1.依据开发提供的接口文档,对接口进行测试. 2.如果是自己学习,可以网上找一些免费的接口进行学习,或者抓包 - ...
- Redis利用Pipeline加速查询速度的方法
1. RTT Redis 是一种基于客户端-服务端模型以及请求/响应协议的TCP服务.这意味着通常情况下 Redis 客户端执行一条命令分为如下四个过程: 发送命令 命令排队 命令执行 返回结果 客户 ...
- css3实现div自动左右动
<!DOCTYPE html> <meta charset="UTF-8"/> <html> <head> <style> ...
- v-bind:value="diy" 添加到 <input type="button" /> 中可以,添加到<button />中不可以,diy是data中的数据
v-bind:value="diy" 添加到 <input type="button" /> 中可以, 添加到<button />中不可 ...
- 基于Zabbix 3.2.6版本的Discovery
作用:用于发现某IP网段内存活并且满足一定条件的主机,发现后进行加入到zabbix server进行监控. 操作步骤: 创建[自动发现规则] 为新建的自动发现规则创建[Action] 操作步骤图文 ...
- Delphi 监视数据的值
- 小伙伴们来看啊!开源智能机 Librem 5 规格发布。
下图是 Librem 5 的高配版规格: (看到这配置,忍不住吐槽一句:放到三年前都看不上……) Librem 5 的更详细规格如下: CPU: i.MX8M @ max. 1.5GHz 四核 Cor ...
- 《Python基础教程》一点笔记
这本书还是月初的时候翻了翻,看了前十章左右就发现这本书写的比较烂,翻译地就更烂了,讲的内容其实没有抓住重点. 下面是看的时候记得几小段代码: #首字母相同的男生女生 girls = ['alice', ...