首页 分享 用R语言的ROC评价决策树和神经网络哪个更优

用R语言的ROC评价决策树和神经网络哪个更优

来源:花匠小妙招 时间:2024-11-12 04:16

首先介绍一下几个基本概念:

预测值为正例,记为P(Positive)预测值为反例,记为N(Negative)预测值与真实值相同,记为T(True)预测值与真实值相反,记为F(False)TP:预测类别是P(正例),真实类别也是PFP:预测类别是P,真实类别是N(反例)TN:预测类别是N,真实类别也是NFN:预测类别是N,真实类别是P所以,tpr就是真正例,fpr就是假正例ROC曲线是显示Classification模型真正率假正率之间折中的一种图形化方法。
解读ROC图的一些概念定义::
真正(True Positive , TP)被模型预测为正的正样本;
假负(False Negative , FN)被模型预测为负的正样本;
假正(False Positive , FP)被模型预测为正的负样本;
真负(True Negative , TN)被模型预测为负的负样本。真正率(True Positive Rate , TPR)或灵敏度(sensitivity)TPR = TP /(TP + FN)  (正样本预测结果数 / 正样本实际数)假负率(False Negative Rate , FNR)FNR = FN /(TP + FN) (被预测为负的正样本结果数 / 正样本实际数 )假正率(False Positive Rate , FPR)FPR = FP /(FP + TN) (被预测为正的负样本结果数 /负样本实际数)真负率(True Negative Rate , TNR)或特指度(specificity)TNR = TN /(TN + FP) (负样本预测结果数 / 负样本实际数)

然后用ROCR包画ROC曲线,但是ROCR包画图函数功能比较单一

# 设置工作空间

# 把“数据及程序”文件夹拷贝到F盘下,再用setwd设置工作空间
setwd("F:/数据及程序/chapter6/示例程序")
# 读取数据
testData <- read.csv("./data/testData.csv")
# 读取模型,tree.model 和nnet.model分别是已建立的决策树和神经网络的模型
load("./tmp/tree.model.RData")

load("./tmp/nnet.model.RData")

library(ROCR)  # 加载ROCR包

# 画出神经网络模型的ROC曲线

nnet.pred <- prediction(predict(nnet.model, testData), testData$class)#括号内是预测分类结果和实际分类结果

performance(nnet.pred ,'auc')@y.values #AUC值,ROC曲线下面积为AUC,用来评价分类器的综合性能,该数值取0-1之间,越大越好。 nnet.perf <- performance(nnet.pred, "tpr", "fpr") 

或者 nnet.perf < - performance(nnet.pred,'auc',"tpr","fpr")​

plot(nnet.perf)

# 画出CART决策的ROC曲线
tree.pred <- prediction(predict(tree.model, testData)[, 2], testData$class)
tree.perf <- performance(tree.pred, "tpr", "fpr") 

plot(tree.perf)


接着利用pROC包画出ROC曲线,可以方便在一个图上比较两个分类器,实现两条ROC曲线画在同一个坐标轴内。

library(pROC)
modelroc <- roc(newdata$y,pre) #括号内为实际分类结果和预测分类结果。
plot(modelroc, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1, 0.2),
     grid.col=c("green", "red"), max.auc.polygon=TRUE,

     auc.polygon.col="skyblue", print.thres=TRUE)

library(pROC)

数据使用包自带数据库


data(aSAH)

roc1 <- plot.roc(aSAH$outcome, aSAH$s100, main="Statistical comparison", percent=TRUE, col="1")


      ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以真正率(灵敏度)为纵坐标,假正率(1-特异度)为横坐标绘制的曲线。

roc2 <- lines.roc(aSAH$outcome, aSAH$ndka, percent=TRUE, col="2")


testobj<- roc.test(roc1,roc2)

text(50, 50, labels=paste("p-value =", format.pval(testobj$p.value)), adj=c(0, .5))

legend("bottomright", legend=c("S100B", "NDKA"), col=c("1", "2"), lwd=2)


 然后用ROCR包画ROC曲线,但是ROCR包画图函数功能比较单一

相关知识

【机器学习】R语言实现随机森林、支持向量机、决策树多方法二分类模型
R语言数据分析案例:鸢尾花(IRIS)
基于R语言的害虫预测算法设计
(完整版)数据分析师笔试题目.docx
Python语言基于CART决策树的鸢尾花数据分类
用R 语言,进行静态绘图和 Shiny 的交互可视化演示
决策树对鸢尾花数据的处理实践
确定韩国水稻病虫害人工神经网络预测模型开发的最小数据量,Computers and Electronics in Agriculture
卷积神经网络的算法范文
TensorFlow 2建立神经网络分类模型——以iris数据为例

网址: 用R语言的ROC评价决策树和神经网络哪个更优 https://www.huajiangbk.com/newsview501865.html

所属分类:花卉
上一篇: 描写花的句子(精选425句)
下一篇: 大班活动教案:花的语言

推荐分享