在数据分析中经常会对不同的模型做判断

一、混淆矩阵法

作用:一种比较简单的模型验证方法,可算出不同模型的预测精度

将模型的预测值与实际值组合成一个矩阵,正例一般是我们要预测的目标。真正例就是预测为正例且实际也是正例(预测正确);假反例是实际是正例但模型错误预测成反例(即预测错误);假正例是预测是模型预测是正例,但实际是反例;真反例是预测是反例,实际也是反例。

查准率=真正例/假正例+真正例(真正率占我们预测是正例的比例)

查全率=真正例/真正例+假反例(真正率占我们实际是正例的比例)

混淆矩阵运用:

以下以回归模型为例,探索混淆矩阵的使用

  1. # 设定五折交叉验证规则
  2. train_control<-trainControl(method = 'cv',number = )
  3. # 对数据集分成
  4. set.seed()# 在任何随机事件之前都需要设定随机种子
  5. index<-createDataPartition(good_data$left,p=.,list = F)
  6. head(index)
  7. traindata<-good_data[index, ]
  8. testdata<-good_data[-index, ]
  9.  
  10. # 建立回归树模型
  11. rpart_model1<-train(left ~ .,data=traindata,
  12. trControl=train_control,method='rpart')
  13. # 将测试集导入回归树模型,求得测试结果
  14. pred_rpart<-predict(rpart_model1,testdata[-])
  15. # 利用混淆矩阵对回归树模型进行评估
  16. con_rpart<-table(pred_rpart,testdata$left) # 混淆矩阵只用测试集,与训练集无关
  17. con_rpart # 求得混淆矩阵结果

pred_rpart   0   1
0           2246  72
1           51     528

对应查准率为:528/51+528=91.19%

二、roc曲线

模型验证,根据学习器的结果对样例排序,逐个把样本作为正例进行预测,每次计算出两个重要的值,分别以它们为横纵坐标作图,即得到ROC曲线。

  1. ###################ROC曲线 #################
  2. # roc函数的值必须是数值型,而pred_rpart为数值型
  3. pred_rpart<-as.numeric(as.character(pred_rpart))# 因子型需要转字符型然后转数值
  4.  
  5. roc_rpart<-roc(testdata$left,pred_rpart)# 后续绘图需要用的信息
  6. # 确定ROC曲线的横纵轴
  7. Specificity<-roc_rpart$specificities # 真反利率 作为X轴
  8. Sensitivity<-roc_rpart$sensitivities # 查全率 作为Y轴
  9. # 开始绘制ROC曲线图
  10. ROC_line<-ggplot(NULL,aes(x=-Specificity,y=Sensitivity))+
  11. geom_line()+
  12. geom_abline()+
  13. annotate('text',x=.,y=.,label = paste('AUC=',round(roc_rpart$auc, )))+
  14. theme_bw()
  15. ROC_line

模型验证方法——R语言的更多相关文章

  1. 【R笔记】R语言函数总结

    R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字 ...

  2. R语言笔记完整版

    [R笔记]R语言函数总结   R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头, ...

  3. 【转】R语言函数总结

    原博: R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头, ...

  4. R语言中文社区历史文章整理(类型篇)

    R语言中文社区历史文章整理(类型篇)   R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterpl ...

  5. asp.net mvc 模型验证-最舒服的验证方式

    在院子里发现 http://www.cnblogs.com/yangecnu/p/3759784.html 模型验证方法 1. 一般方法 繁琐, 无数的if else, 在炎炎夏天,我见过一个验证方法 ...

  6. R语言入门(2)-数据对象

    数据对象 创建向量相关的方法 R语言的向量用法非常像python, 就比如这个seq(0,10,2), 从0到10, 步长为2, 涉及到的元素作为向量里的内容进行创建. 这里的用法非常像Matlab, ...

  7. 基于gin的golang web开发:模型验证

    Gin除了模型绑定还提供了模型验证功能.你可以给字段指定特定的规则标签,如果一个字段用binding:"required"标签修饰,在绑定时该字段的值为空,那么将返回一个错误.开发 ...

  8. Python数据科学手册-机器学习之模型验证

    模型验证 model validation 就是在选择 模型 和 超参数 之后.通过对训练数据进行学习.对比模型对 已知 数据的预测值和实际值 的差异. 错误的模型验证方法. 用同一套数据训练 和 评 ...

  9. R语言、02 案例2-1 Pelican商店、《商务与经济统计》案例题

    编程教材 <R语言实战·第2版>Robert I. Kabacoff 课程教材<商务与经济统计·原书第13版> (安德森) P48.案例2-1 Pelican 商店 PS C: ...

随机推荐

  1. 使用 UIStoryBoard 语法糖

    最后更新: 2018-09-06 当你用 UIStoryBoard (以下简称 'SB') 做iOS开发时候,总是避免不了设置 StoryBoard ID 的问题, StoryBoard ID 是一个 ...

  2. vue之Object.defineProperty()

    了解Object.defineProerty()方法 关于Object.defineProperty()方法的解释,理解Object.defineProperty的作用 这篇文章做了很详细的概述 关于 ...

  3. session与cookie区别与联系

    一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...

  4. MyRocks安装部署

    参考:https://www.cnblogs.com/WonderHow/p/5621591.html CentOS 7.3 gflags:git clone https://github.com/g ...

  5. 连接Access数据库

    web.config添加配置 <connectionStrings> <add name="connStr" connectionString="Pro ...

  6. 四十、python中的生成器和迭代器

    A.生成器(包含yield的就是生成器) def func(): print(11) yield 1 print(22) yield 2 print(33) yield 3 print(44) yie ...

  7. docker-容器完整构建过程

    container 代码app,构建,运行,分享(推送)image mkdir img1 cd img1 [root@cu-tmp-201 img1]# ls app.py Dockerfile re ...

  8. 异步分发任务celery

    Celery简介 Celery是一个功能完备即插即用的任务队列.它使得我们不需要考虑复杂的问题,使用非常简单. celery适用异步处理问题,当遇到发送邮件.或者文件上传, 图像处理等等一些比较耗时的 ...

  9. 003-unity3d 物理引擎-示例2 打箱子

    一.基础知识点 1.坐标.向量等 )) { //1.将鼠标坐标 转化为 世界坐标 由于鼠标z轴 可能不存在,故自定义为3 Vector3 targetPos = Camera.main.ScreenT ...

  10. promise不会被return触发, 一个promise对象中不会被Promise.reject触发

    1. let a = new Promise((resolve,reject)=>{ return 23 }) a; // promise <pending> 2. let a = ...