使用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)
  
  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用于对待估参数的范围进行设置 

(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(教师经济信息)逻辑回归分析的方法和技巧的更多相关文章

  1. 竞价广告系统-逻辑回归优化方法-L-BFGS

    逻辑回归优化方法-L-BFGS 逻辑回归的优化方法是一个经典的问题,如果我们把它视为一个最大熵模型,那么我们知道最早的优化方法是IIS,这个方法就不细讲了,因为它速度很慢.后来发现在最优化领域中非常常 ...

  2. [Q]“获取AutoCAD安装信息时失败...”解决方法

    “获取AutoCAD安装信息时失败...”解决方法:在“setup.exe”上右键,以管理员权限运行即可.

  3. [转载]织梦CMS首页调用分类信息栏目及列表方法

    原文地址:织梦CMS首页调用分类信息栏目及列表方法作者:小武哥 不懂代码,搜索学习一晚上,都是说调用特定栏目分类信息列表的,用这个代码 {dede:arclistsg row='10' titlele ...

  4. 利用Filter和拦截器,将用户信息动态传入Request方法

    前言: 在开发当中,经常会验证用户登录状态和获取用户信息.如果每次都手动调用用户信息查询接口,会非常的繁琐,而且代码冗余.为了提高开发效率,因此就有了今天这篇文章. 思路: 用户请求我们的方法会携带一 ...

  5. 这里给大家介绍一下通过 Wi-Fi 连接“慷慨捐赠”你的身份信息的七种方法.

    这里给大家介绍一下通过 Wi-Fi 连接“慷慨捐赠”你的身份信息的七种方法和反制措施. 本文作者:黑子小盆友 1.利用免费热点 它们似乎无处不在,而且它们的数量会在接下来四年里增加三倍.但是它们当中很 ...

  6. Win7系统与它的Virtualbox中安装的Ubuntu14.04共享信息的几种方法

    虚拟机是每一个程序猿必备的工具.本文依据最新版VirtualBox用户手冊的提示,通过自己的亲自实践,给出了Win7系统与执行在当中的VirtualBox 5.0.2中的Ubuntu 14.04共享信 ...

  7. YUV420数据和字符信息如何利用滤镜方法进行编码?

    YUV420数据和字符信息如何利用滤镜方法进行编码?我希望用ffmpeg中的filter方法,把YUV420数据和字符信息一起编码,该怎么办呢? 本人目前只实现了把yuv420的数据进行h.264的编 ...

  8. Object Pascal 方法与技巧

    4 方法与技巧 4.1 设置代码模板 代码模板是Delphi 的代码感知特性的一种,通过它可以快速.高效和正确地输入代码.代码模板将一些常用的语句块保存在模板中,然后程序员只要在代码编辑器中按下“Ct ...

  9. 性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧

    性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对 ...

随机推荐

  1. # log对数Hash映射优化

    log对数Hash映射优化 利用了一个数学技巧:$\forall k \in [0,35],2^{k} mod 37 互不相等,且恰好取遍整数1-36 $ 应用:将int范围内的\(2^k映射到k\) ...

  2. springboot添加https

    一.使用JDK工具keytool生成证书 keytool命令详解 https://blog.csdn.net/zlfing/article/details/77648430 keytool -genk ...

  3. 关于Android studio调用高德地图的简单流程和要点

    一,账号与Key的申请 注册成为高德开发者需要分三步: 第一步,注册高德开发者:第二步,去控制台创建应用:第三步,获取Key. 前2步都比较简单,这里说下第三步. 获取Key 1.进入控制台,创建一个 ...

  4. luogu题解 UVA11536 【Smallest Sub-Array】最短set区间&滑动窗口

    题目链接: https://www.luogu.org/problemnew/show/UVA11536 题目大意: 给定一个\(N,M,K\),构造这样的数列: \(x[1]=1,x[2]=2,x[ ...

  5. Java中「与运算,或运算,异或运算,取反运算。」

    版权声明一:本文为博主原创文章,转载请附上原文出处链接和本声明.版权声明二:本网站的所有作品会及时更新,欢迎大家阅读后发表评论,以利作品的完善.版权声明三:对不遵守本声明或其他违法.恶意使用本网内容者 ...

  6. O011、理解 virbr0

    参考https://www.cnblogs.com/CloudMan6/p/5308071.html   virbr0 是KVM 默认创建的一个Bridge ,其作用是为该宿主机上的虚机提供NAT上网 ...

  7. win7(64位旗舰版)visual studio 2017无法安装及vs2015闪退问题解决方式

    折腾了两天,几乎试了网上说的所有方法(就差重装系统了,看到有人说重装系统之后还是同样的问题,果断放弃重装),visual studio 2017的安装问题终于解决了,为了帮助同样还在折腾的初级开发者们 ...

  8. HTTPS中CA证书的签发及使用过程

    1,HTTPS 简单来讲,HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议就是安全的HTTP,我们知道HTTP是运行在TCP层之上的,HTTPS在 ...

  9. django优化--ORM查询

    ORM提供了两个方法用来优化查询效率 1. select_related 有两张表:表结构如下: class Scheme(models.Model): """ 套餐类 ...

  10. Linux部署java和tomcat的运行环境

    Linux部署java和tomcat的运行环境 1.上传下载的jdk的rpm包和tomcat的tar包,我是放到/opt目录了,文件直接去官网下载即可. 2.如果之前安装过其他版本的jdk,最好先现在 ...