zoukankan      html  css  js  c++  java
  • 模型验证方法——R语言

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

    一、混淆矩阵法

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

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

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

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

    混淆矩阵运用:

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

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

    pred_rpart   0   1
    0           2246  72
    1           51     528

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

    二、roc曲线

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

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

  • 相关阅读:
    Flink实例(117):FLINK-SQL应用场景(16)以upsert的方式读写Kafka数据——以Flink1.12为例(二)
    Flink实例(116):FLINK-SQL应用场景(15)以upsert的方式读写Kafka数据——以Flink1.12为例(一)
    数据挖掘实践(17):基础理论(十七)数据挖掘基础(四)模型解释
    数据挖掘实践(16):基础理论(十六)数据挖掘基础(三)特征工程(二)性能度量与评估方法
    rust 可变变量
    Rust学习(32):智能指针-Rc<T>
    rust 高级编程
    rust 所有权
    rust智能指针
    Anbox:容器中的 Android,anboxandroid
  • 原文地址:https://www.cnblogs.com/Grayling/p/11223573.html
Copyright © 2011-2022 走看看